Tvorba pevných odkazů
Existuje několik způsobů, jakými lze vytvořit pevný odkaz. Konečný výsledek na použitém způsobu vytvoření odkazu nezávisí, práce s odkazy a jejich dereference jsou stále stejné. Prostor pro odkazovanou hodnotu se alokuje automaticky. Po posledním použití odkazu se alokovaná paměť automaticky uvolní.Operátor obrácené lomítko
Tento operátor se používá pro získání odkazu na proměnnou, podprogram nebo anonymní (nepojmenovanou) skalární hodnotu.
$odkaz_na_skalar = \$prom;
$odkaz_na_pole = \@pole;
$odkaz_na_hash = \%hash;
$odkaz_na_funkci = \&podprogram;
$odkaz_na_typeglob = \*TYPEGLOB;
$odkaz_na_konstantu = \123;
U odkazu na podprogram je vždy nutné před jménem podprogramu uvést znak &. Kdybychom ho neuvedli, nejprve by se podprogram zavolal a odkaz by se vytvořil na to, co funkce vrátí. Uvedeme-li operátor obrácené lomítko před seznamem hodnot v kulatých závorkách, dochází k tomu, že výsledkem bude seznam odkazů na jednotlivé hodnoty seznamu.
@seznam_odkazu = \($s, @p, %h, &f);
@seznam_odkazu = (\$s, \@p, \%h, \&f);
// v obou případech bude stejný efekt
Anonymní konstruktor
Je možné vytvářet odkazy na datové struktury, které nejsou nijak pojmenované. Je vždy nutné u příslušného datového typu použít správný operátor. Anonymní odkazy lze vytvářet u pole (operátor " [ ]") , hashe (operátor "{ }"), skaláru (operátor " ") a podprogramu (operátor "sub").
$odkaz_na_pole = [1, 'a', 'xxxxx'];
// odkaz na pole
$odkaz_na_dny = { 'Pondělí' => 1, 'Úterý' => 2, 'Středa' => 3, 'Čtvrtek' => 4, 'Pátek' => 5};
//odkaz na hash
$odkaz_na_funkci = sub { print 'Ahoj.' };
//odkay na podprogram
sub novy_odkaz {
my $odkaz;
return \$odkaz;
}
// odkaz na skalár
Vytváření odkazů pomocí tabulky symbolů
Pomocí syntaxe * jméno { TYP } lze získat pomocí typeglobu zadaného jména odkaz na jednu jeho část určenou typem ve složených závorkách.
$odkaz_na_skalar = *x{SCALAR};
$odkaz_na_pole = *pole{ARRAY};
$odkaz_na_hash = *hash{HASH};
$odkaz_na_funkci = *f{CODE};
$odkaz_na_ovladac = *SOUBOR{IO};
$odkaz_na_typeglob = *x{GLOB};
A to by bylo pro dnešek všechno. V dalším díle se podíváme na použití pevných odkazů. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman