Použití pevných odkazů
Podobně jako při vytváření odkazů existuje několik metod jak přistupovat k odkazovaným hodnotám. Tam, kde se ve jméně proměnné či podprogramu používá alfanumerický řetězec, lze umístit skalární proměnnou obsahující odkaz správného typu.Máme-li v proměnné $x odkaz, před jméno této proměnné napíšeme prefix tak, jak chceme, aby se tento odkaz interpretoval. Pokud proměnná obsahuje odkaz na skalár, umístíme před ni znak $. Pokud tato proměnná odkazuje na pole, umístěním symbolu @ před jméno této proměnné získáme celé odkazované pole. Pokud chceme přistoupit k jednomu jeho prvku, napíšeme před jméno proměnné znak $ a za jméno index prvku v hranatých závorkách. Podobně postupujeme při dereferenci odkazu jakéhokoliv jiného typu.
$hodnota = $$odkaz_na_skalar;
push @$odkaz_na_pole, $retezec;
$$odkaz_na_pole[0] = 12345;
$$odkaz_na_hash{KLÍČ} = 'HODNOTA';
&$odkaz_na_funkci(1, 2, 3);
print $odkaz_na_typeglob $data;
Pro práci s prvkem pole nebo hodnotou hashe, či funkcí, na kterou je vytvořena reference, můžeme použít zápis pomocí operátoru ->. Tento operátor provede dereferenci výrazu na levé straně a následně s tímto výrazem pracuje jako s typem, na který se odkazujeme.
$odkaz_na pole = \@pole;
$odkaz_na_pole->[0];
// je první prvek pole @pole, stejné jako $$odkaz_na_pole[0]
$odkaz_na_hash = \%hash;
$odkaz_na_hash->{KLÍČ}
// je hodnota hashe %hash na pozici KLÍČ, stejné jako $$odkaz_na_hash{KLÍČ}
$odkaz_na_funkci = \&funkce;
$odkaz_na_funkci->(l,2,3);
// je volání funkce funkce(), stejné jako $$odkaz_na_funkci(1,2,3)
A to by bylo pro dnešek všechno. V dalším díle se podíváme na moduly. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman