Vraceni odkazu v perlu

Pavel Šmerk xsmerk na informatics.muni.cz
Úterý Březen 20 08:55:06 MET 2001


Zdravim,

asi neco nechapu. Ve velbloudi knize je psano, ze my deklaruje promenne
pouze pro nejvnitrnejsi uzavirajici blok. Nejak se mi nepodarilo najit,
jak funguje vraceni odkazu na takto deklarovane privatni promenne v
podprogramech. Nevim proc, ale myslel jsem si, ze bych v takovem pripade

vracel odkaz na neco, co mi behem navratu prestane existovat.
Nasledujici prikaz nicmene vypise jednicku

perl -e 'sub a {my $a = 1; return \$a} my $a = a; print $$a'

potreboval bych vedet, jestli muzu spolehat na to, ze vraceny odkaz
pujde vzdy dereferencovat na puvodni hodnotu privatni promenne, nebo
jestli napriklad misto \@pole je lepsi vracet [@pole] atd. (vzdy
samozrejme za predpokladu my @pole).

Diky

P.

P.S. Vsechno, co jsem zkousel, nasvedcuje tomu, ze lze takto vracet
odkazy a pujdou vzdy rozumne dereferencovat. V takovem pripade by me
zajimalo, jak dlouho perl 'chrani' obsahy promennych deklarovanych
pomoci my - jestli je to treba jako v unixu se soubory, ze by se pamet
uvolnila, az by se na ni nikdo neodkazoval.



Další informace o konferenci Perl