Tak tohle se mi zda opravdu nefer!
Ondrej Koala Vacha
koala na fi.muni.cz
Středa Prosinec 1 22:54:33 MET 1999
On Wed, 1 Dec 1999, Martin Caslavsky wrote:
> Narazil jsem na takovejhle skriptik
>
> $h{prvni}{vek} = 100;
> $h{prvni}{plat} = 1000;
> $h{druhy}{vek} = 200;
> $h{druhy}{plat} = 2000;
> %vyber = ( prvni => "a", treti => "c");
>
> foreach $key (sort keys %vyber) {
> if (exists $h{$key}{vek}) {
> # .....
> }
> }
>
> print scalar keys %h;
>
> Vysledkem je 3, tedy do hashe se v prubehu testovani prida dalsi klic.
> Nevim, ale me osobne to prijde jako rana pod pas -- opatrne na to saham,
> podminkou jenom tak otuknu, a po projeti podminky mi perl pohotove vytvori
> dalsi polozku.
> Uz vim, ze spravne (aby to fungovalo :) musi ta podminka byt jenom
> if (exists $h{$key})
> ale chci se zeptat, jestli vam tohle chovani prijde normalni? Vzdyt to za
> chvili muzu cekat, ze se mi stane to samo kdyz udelam if exists $hash{$key}
> a sup uz ho tam mam!
>
V if (exists $h{$key}{vek}) se ptate, zda existuje klic 'vek' v dane
hashi. Jelikoz hash neexistuje, perl ho vytvori (tak jako jindy), aby mohl
ten test provest. exists je test na _klic_, nikoli na hash samotny.
---
Ondrej Koala Vacha
Další informace o konferenci Perl