Délka pole
Počet prvků v poli lze získat vyhodnocením proměnné v skalárním kontextu. Explicitně toho lze dosáhnout s využitím funkce scalar, viz následující kód.
Scalar @pole;
Stejný výsledek lez získat také v jinak vzniklém skalárním kontextu. Index poledního prvku pole je obsazen v proměnné $#pole. Pokud tedy indexujeme pole od 0, je hodnota této proměnné o jedna menší, než je velikost pole. Přiřazením do této proměnné lze měnit velikost pole. Je-li nově přiřazovaná hodnota větší, než je aktuální délka pole, pak je počet prvků pole zvýšen - jsou doplněny prvky s nedefinovanou hodnotou. Je-li přiřazovaná hodnota menší, než aktuální délka pole, pak je pole zkráceno a přebytečné prvky jsou ztraceny. Zkrátit pole na nulovou délku lze tedy podle následujícího příkladu:
@pole = ();
$#pole = -1;
Přístup k jednotlivým prvkům
Pro přístup k jednotlivým prvkům pole se používají indexy, což jsou číselné hodnoty začínající od nuly (implicitně) a zadávají se do hranatých závorek za jméno proměnné typu pole. Jednotlivé hodnoty pole jsou skalární hodnoty (uvozeny znakem $). Proměnná $pole[0] je prvním prvkem pole @pole, proměnná $pole[1] druhým….a proměnná $pole[$#pole] posledním.K prvkům lze také přistupovat od zadu. K tomu se používají záporné indexy pole. $pole[-1] tedy znamená první prvek pole od konce, neboli poslední prvek pole @pole. Nezáleží na tom, zda přistupujeme k prvkům pole nebo seznamového literálu, v obou případech se používají hranaté závorky a indexy. Číselné indexy nemusejí být pouze konstanty, ale i výrazy vracející hodnotu. Tyto výrazy jsou vždy vyhodnocovány vždy ve skalárním kontextu a hodnota je brána jako číslo (řetězec je nejdříve převeden na číslo). V následujícím příkladu je znázorněno několik příkazů na dotaz na určité prvky pole (seznamu) pomocí různých přístupů.
$pole [1] = 'abc';
Print $pole [1];
//Vytiskne hodnotu druhého prvku pole.
$a = (1, 2, 3) [2];
$x = 1;
$pole [$x] = 'x'
// přiřazení do $pole [1]
$pole [@pole] = '4';
// přiřazení do $pole [3]
$pole ['102klm'] = 3;
// přiřazení do $pole [2]
$pole ['abc'] = 'z';
// přiřazení do $pole [0]
$pole [undef] = 'y';
// přiřazení do $pole [0]
A to by bylo pro dnešek všechno. V dalším díle se podíváme na možnosti práce s více prvky seznamu nebo pole najednou. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman