Seznamy Seznam = očíslovaná posloupnost skalárů Zápis seznamu do kulatých závorek: ("máslo")# jednočlenný seznam (1,2,3)# seznam se 3 členy ("jedna",2,3,"osm",100,$pozdrav) ()# prázdný seznam (2..7)# (2,3,4,5,6,7) print – seznamový operátor => netřeba závorek print "Výsledek je ", $prijmeni, "\n"; –tiskne 3členný seznam, nepřidává mezery !
Zápis seznamu řetězců Místo uvozovek (jednoduchých či dvojitých) lze použít operátory q nebo qq Operátor qw - nemusí (NESMÍ) se psát uvozovky: qw(máslo mouka sýr rozinky) –Místo závorek lze použít jiný oddělovač, stejně jako pro q, qq Mezi členy seznamu mohou být mezery, tabulátory, znaky konce řádku: qw[ máslo mouka sýr rozinky]
Seznamy a proměnné ($jedna, $dve) = (1,2); –totéž jako $jedna = 1; $dve = 2; ($tri, $ctyri) = ($jedna, $dve); –napřed se vyhodnotí seznam vpravo, ten se pak přiřadí do seznamu nalevo ($tri, $ctyri) = ($ctyri, $tri);# výměna obsahu dvou proměnných –Je to totéž jako $tri = $ctyri; $ctyri = $tri; ?
Pole (array) = zařízení na ukládání seznamů Název pole - dále stejná pravidla jako pro název proměnné Ukládání dat do polí: přiřazení seznamu: = = qw(máslo mouka sýr rozinky); Rozdíl print
Pole a je něco jiného než $pole ! NEDĚLEJTE TO !!! Ale lze přiřazovat skaláru = qw(máslo mouka sýr rozinky); $skalar print $skalar;# Výsledek je 4 = počet prvků pole print totéž Skalární kontext vs. seznamový kontext
Prvky pole Index pole - pořadí prvku pole Čísluje se od nuly = qw(nominativ genitiv dativ akuzativ vocativ local instrumental); print $pady[2];# co se vypíše? záporný index - odzadu: print $pady[-3]; Výpis více prvků najednou: proč tu není $ ? @pady[4..0] !
Prvky pole - pokr. Přiřazování prvků pole $pad1 = ($pad1,$pad3, $pad7) Zvl. proměnná $#pole - index posledního prvku pole Změna obsahu prvku pole - prosté přiřazení: $pole[2] = "třetí pád"; Vložení jiného = = print $pole2[2]; # co se vypíše?
Funkce na polích máslomoukasýrrozinky chléb pop rozinky push máslomoukasýr rum chlébrum máslomoukasýr shift máslo moukasýr unshift cukr chlébrum chlébrum sůl cukrsůl chléb/); "cukr", sůl");
Další funkce moukasýr splice cukrchlébrumsůl krupicetvaroh pole odkud kolik čím (seznam) Podobné jako u funkce substr, jenže pro prvky pole.
Funkce split Pracuje na řetězcích, výsledek je seznam $veta = "Dnes máme ale hezké = split(" ",$veta); "\n"; # co se vypíše ? split(vzor, řetězec) Vzor může být i více znaků.
Cyklus foreach foreach proměnná (seznam) { blok } foreach $pad { print $pad, "\n"; } Cyklus se opakuje tolikrát, kolik prvků má seznam Použití při procházení pole – s každým prvkem se něco provede Nelze nekonečný cyklus - výhoda
Cyklus for for (inicializace ; podmínka ; změna) { blok} for($i = 0; $i <= $#pady; $i++) { print $pady[$i], "\n"; } Použití deklarace my uvnitř cyklu neovlivní hodnotu proměnné vně $i = 666; for(my $i=10;$i>0;$i--) {print $i} print $i; # bude 666
Vnořené cykly = qw/konec exit quit leave stop/; while( ) { chomp; foreach my $k { last if ($k eq $_) } print "Stále jsme neskončili, říkáš $_!\n"; } print "Končíme\n";
Návěští = qw/konec exit quit leave stop/; VNEJSI: while( ) { chomp; VNITRNI: foreach my $k { last VNEJSI if ($k eq $_) } print "Stále jsme neskončili, říkáš $_!\n"; } print "Končíme\n";