Práce s více prvky pole
V Perlu je možné pracovat s buď s prvky pole, s jeho částí nebo s polem jako s celkem. Jediným příkazem lze jedno pole nebo seznam zkopírovat do druhého. Přiazování probíhá tak, že si jsou přiřazovány prvky na odpovídajících pozicích. Nyní tři malé příklady:
1.
($a, $b, $c) = (1, 2, 3);
2.
($a, $b, $c) = (1, 2);
3.
($a, $b) = (1, 2, 3);
V prvním příkladu mají všechny tři proměnné hodnoty 1,2 a 3. V druhém případě se provede přiřazení do proměnných $a a $b, do proměnné $c bude uložena nedefinovaná hodnota, neboť nebyla nalezena odpovídající hodnota v seznamu na pravé straně. V posledním případě budou proměnným $a a $b přiřazeny hodnoty 1 a 2. Hodnota 3 bude zapomenuta, protože pro ni nebylo nalezeno na levé straně výrazu přiřazení.
Chceme-li zkopírovat všechny prvky pole1 do pole2, provedeme to následujícím příkazem. Obě pole poté mají stejnou délku. Mělo-li na začátku jedno pole větší délku, pak jsou přebytečné prvky zapomenuty.
@pole1 = @pole2;
Je-li na levé straně přiřazení seznamová proměnná, pak jsou do ní uloženy všechny zbývající hodnoty na straně pravé.
1.
($promenna1 $promenna2 @zbytek) = (1, 2, 3, 4, 5, 6, 7);
// $promenna1 obsahuje 1, $promenna2 obsahuje 2, @zbytek obsahuje (3, 4, 5, 6, 7)
2.
($promenna1 @zbytek $promenna2) = (1, 2, 3, 4, 5, 6, 7);
// $promenna1 obsahuje 1, @zbytek obsahuje (2, 3, 4, 5, 6, 7), $promenna2 obsahuje
// nedefinovanou hodnotu
Úseky polí
S několika prvky pole lze současně pracovat jako s tzv. úseky následujícím způsobem.
($den, $mesic, $rok) = (localtime) [3, 4, 5];
@pole[5..7] = (5, 6, 7);
Foreach ( @pole[5..7] ) { print };
Zápis úseku pole vypadá jako zápis prvku pole, ale na začátku je symbol @. Nejedná se totiž o skalární hodnotu, ale o seznamovou hodnotu. Práce s úseky pole je úplně stejná, jako s normálními polemi.
A to by bylo pro dnešek všechno. V dalším díle se podíváme na funkce pro práci s poli. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman