![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
Index | Hodnota |
0 | "hodnota1" |
1 | "další" |
2 | "a poslední" |
Zajímavá pro nás bude také funkce qw. Přesněji řečeno, nejde o funkci, ale o způsob uvození (proto ji označujeme - stejně jako uvozovky - tučně zeleně). Umožňuje položky v uvozovkách, oddělené čárkou, oddělovat jen mezerou (obecně bílým místem). Řetězec není v uvozovkách ani apostrofech. Užijeme ji nejen při delších výčtech.
Tyto příkazy mají stejný význam:
@pole = ("a", "b", "c");
@pole = qw(a b c);
Pole máme, jak z něj číst? Chceme-li získat hodnotu prvku @pole s indexem x, zápis je následující:
$pole[x]
Pozor na to, že prvek pole je skalárem (nikoliv seznamem) a označuje se v Perlu 5, jako jsme tomu byli u skalárů zvyklí, dolarem.
Takže, chceme-li získat data z našeho @pole, použijme následující:
print "Prvek 0: $pole[0]\n";
print "Prvek 1: $pole[1]\n";
print "Prvek 2: $pole[2]\n";
Výstup:
$ perl pole.pl
Prvek 0: hodnota1
Prvek 1: dalsi
Prvek 2: a posledni
$
Pole můžeme editovat i přiřazením do $pole[index]:
$pole[0] = "Perl";
$pole[4] = "Linux";
Za předchozí kód přidejme ještě tento:
print "Prvek 0: $pole[0]\n";
print "Prvek 1: $pole[1]\n";
print "Prvek 2: $pole[2]\n";
print "Prvek 3: $pole[3]\n";
print "Prvek 4: $pole[4]\n";
Po spuštění dostanete:
$ perl pole.pl
Prvek 0: Perl
Prvek 1: dalsi
Prvek 2: a posledni
Prvek 3:
Prvek 4: Linux
$
Výstup ukazuje hned několik skutečností. Přiřazením hodnoty do prvku pole přemažeme původní obsah (index 0). Lze přiřadit hodnotu i do prvku, který bezprostředně nenavazuje na předchozí (index 4). Prvek 3 existuje, ale zůstal nedefinovaný. To i přesto, že prvek 4 definován je.
Následující dva zápisy si jsou ekvivalentní:
@pole = ("a", "b", "c");
$pole[0] = "a";
$pole[1] = "b";
$pole[2] = "c";
Zkopírujme obsah jednoho prvku pole do jiného. Je to stejné, jako u obyčejných proměnných.
@pole = qw(a b c);
$pole[3] = $pole[0]; #do prvku s indexem 3 bude přiřazena hodnota, která je v prvku s indexem 0
Kopírovat můžeme i celá pole.
@pole = qw(a b c);
@pole2 = @pole; #@pole2 je kopií @pole
Jak @pole, tak @pole2 mají stejný obsah.
Stejně tak můžeme kopírovat část pole:
@pole = qw(a b c d e);
@pole2 = ($pole[2], $pole[3], $pole[0]);#@pole2 nyní obsahuje prvky 0, 1, 2
s obsahem po řadě c, d, a.
Chceme-li přiřadit prvek z @pole s indexem 7 do @pole2 (index 4) a zároveň prvek @pole s indexem 3 do @pole2 (index 11), lze použít zápis:
@pole2[7, 3] = @pole[4, 11];
Ekvivalentním zápisem je:
$pole2[7] = @pole[4];
$pole2[3] = @pole[11];
Pokud bude málo prvků v hranatých závorkách (ale platí to obecně, pokud přiřazujeme seznam) na pravé straně přiřazení, doplní se nedefinovanými hodnotami. Přebývají-li, jsou ignorovány prvky navíc zprava.
Podobný příklad jako předchozí:
@pole2 = @pole[4, 11, 25, 94]; #@pole2 nyní obsahuje prvky 0, 1, 2, 3 s obsahem stejným
jako prvky s hodnotami 4, 11, 25, 94 v @poli.
Pole můžeme složit i z několika jiných polí.
@jazyky = qw(Perl Python);
@cisla = (68, 3.14);
@mix = (@jazyky, @cisla); # obsahuje prvky s hodnotami Perl, Python, 68, 3.14
Přidat na konec pole nějakou hodnotu se dá i následovně (později poznáme lepší způsob - funkci):
@jazyky = qw(Perl Python);
@jazyky = (@jazyky, "Ruby");
Perl umožňuje mnoho zvláštních (přesto však nepostrádajích logiku) konstrukcí. Pro zajímavost příklad:
$p = ("a", "b", "c")[1];
print $p;
("a", "b", "c") je vlastně seznamem (polem). Z něj se do $p přiřadí prvek s indexem 1.
Stejně jako je seznamem ("a", "b", "c"), může jím být i ($p1, $p2, $p3). Seznamem je dokonce i ($p). Takto zapsané hodnoty v kulatých závorkách jsou seznamem vždy. Poslední případ je sice jednoprvkovým seznamem, ale stále seznamem. Pokud do pole přiřadíme prázdné závorky, pole bude dokonce prázdné.
V další ukázce přiřazujeme jeden seznam do jiného. Na levé straně samozřejmě musí být proměnné.
($a, $b) = ("a", "b");
print $a; #a
print $b; #b
Existuje řada variací tohoto příkladu. Pokračujme v kódu.
($a, $b) = ($b, $a); #prohození hodnot v proměnných
print $a; #b
print $b; #a
@mix = ($a, 1, 2, $b, "Perl"); #b, 1, 2, a, Perl
@mix2 = ($a, @mix, 4, "Linux") #b, b, 1, 2, a, Perl, 4, Linux
Zatím víme, že index označuje pořadí prvku. Mohou být i záporné. V tom případě je hodnota pořadím od konce pole. Pozor na to, že první prvek od konce se značí $pole[-1], nikoliv $pole[-0]. To proto, že $pole[-0] je stejné jako $pole[0].
|
||||
KOMENTARZE | ||||
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
1. |
Pacman linux Download: 5004x |
2. |
FreeBSD Download: 9214x |
3. |
PCLinuxOS-2010 Download: 8700x |
4. |
alcolix Download: 11096x |
5. |
Onebase Linux Download: 9809x |
6. |
Novell Linux Desktop Download: 0x |
7. |
KateOS Download: 6372x |
1. |
xinetd Download: 2535x |
2. |
RDGS Download: 937x |
3. |
spkg Download: 5040x |
4. |
LinPacker Download: 10209x |
5. |
VFU File Manager Download: 3311x |
6. |
LeftHand Mała Księgowość Download: 7340x |
7. |
MISU pyFotoResize Download: 2973x |
8. |
Lefthand CRM Download: 3673x |
9. |
MetadataExtractor Download: 0x |
10. |
RCP100 Download: 3270x |
11. |
Predaj softveru Download: 0x |
12. |
MSH Free Autoresponder Download: 0x |