- Napište program, který načte větu, vypíše počet znaků, počet slov z
vypíše větu s obráceným pořadím slov.
$veta = <>;
chop $veta;
print "Pocet znaku: ", length($veta), "\n";
print "Pocet slov: ", scalar(split / /, $veta), "\n";
print "Veta opacne: ", join (' ', reverse split / /, $veta) , "\n";
-
Napište program, který načte ze vstupu čísla oddělená mezerou (na jednom
nebo více řádcích) a po ukončení zadávání vypíše podle četnosti seřazená
čísla, a za každý výskyt čísla jednu hvězdičku.
Vstup: 1 2 3 4 123 12 1 2 3 56 6 5 4 5 5 1 2 3
Výstup:
5: ***
1: ***
2: ***
3: ***
4: **
56: *
12: *
123: *
6: *
# reseni
while (<>) {
for (split) {
$cisla{$_}++;
}
}
for (reverse sort {$cisla{$a} <=> $cisla{$b}} keys %cisla) {
print "$_: ", '*' x $cisla{$_}, "\n";
}
-
Vypište jména osob ze struktury %o tak, že jsou osoby seřazeny podle věku, v případě stejného věku jsou seřazeny podle jména. Poużijte funkci sort.
%o = ('001' => {vek => 20, jmeno => 'Zeleny Petr'},
'002' => {vek => 50, jmeno => 'Modry Adam'},
'003' => {vek => 45, jmeno => 'Cerny Jiri'},
'004' => {vek => 30, jmeno => 'Zluty Josef'});
print join ', ',
map "$o{$_}->{jmeno}",
sort { $o{$a}->{vek} <=> $o{$b}->{vek}
||
$o{$a}->{jmeno} cmp $o{$b}->{jmeno}
} keys %o;
# nebo
print join ', ',
map "$_->{jmeno}",
sort { $a->{vek} <=> $b->{vek}
||
$a->{jmeno} cmp $b->{jmeno}
} values %o;
-
Vypište aktuální datum ve formátu: 1. dubna 2012 (sobota)
@udaje = localtime;
print "$udaje[3]. ",
(qw/ledna února března dubna května června července
srpna září října listopadu prosince/)[$udaje[4]],
" ",
1900+$udaje[5],
" (",(qw/pondělí úterý středa čtvrtek
pátek sobota neděle/)[$udaje[6]-1],")";
-
Načtěte ze souboru údaje o osobách (jméno, příjmení, adresu, plat a
poznámku). Pomocí formátu zobrazte tento údaj to tabulky. Na jednu stránku
zobrazte 6 řádků (včetně záhlaví). Do záhlaví každé stránky vypište číslo
stránky a aktuální datum.
Data:
Novak:Petr:Praha:100:Poznamka
Polak:Pavel:Ostrava:50.60:Bez poznamek
Vesely:Ivan:Brno:85.8612:
Bednar:Josef:Olomouc:90:
Rychly:Arnost:Praha:68.1:
Dostal:Jiri:Brno:123.456:
Vzor zahlavi:
+---------------------------------------------------------------------------------+
|Strana: X Datum: Tue Mar 25 11:52:10 2003 |
+------------------+-----------------+----------+--------+------------------------+
|Jmeno |Prijmeni |Adresa | Plat |Poznamka |
+------------------+-----------------+----------+--------+------------------------+
Mozne reseni:
========================
format STDOUT_TOP =
+---------------------------------------------------------------------------------+
|Strana:@<<<< Datum: @<<<<<<<<<<<<<<<<<<<<<<<<<<< |
$%, scalar (localtime)
+------------------+-----------------+----------+--------+------------------------+
|Jmeno |Prijmeni |Adresa | Plat |Poznamka |
+------------------+-----------------+----------+--------+------------------------+
.
format =
|@<<<<<<<<<<<<<<<<<|@<<<<<<<<<<<<<<<<|@<<<<<<<<<|@####.##|@<<<<<<<<<<<<<<<<<<<<<<<|
$jmeno, $prijmeni, $adresa, $plat, $poznamka
.
open F, "data.txt";
$==6;
while (<F>) {
chomp;
($jmeno, $prijmeni, $adresa, $plat, $poznamka) = split /:/;
write;
}