Proc map 'tvori' nove polozky pole?

Honza Pazdziora adelton na informatics.muni.cz
Čtvrtek Únor 14 10:45:28 MET 2002


On Thu, Feb 14, 2002 at 10:36:13AM +0100, Pavel Šmerk wrote:
> Zdravim,
> 
> $ perl -e '$,=","; print $a[0], scalar @a, map($_, ($a[0])), scalar @a, 
> "\n"'
> ,0,,1,
> 
> muze mi nekdo rict, proc tomu tak je? Procetl jsem dokumentaci k map, 
> ale nejak jsem tam nenasel nic, co by mi to vysvetlovalo (ze ten map ma 
> vedlejsi efekt $a[0] = undef).

Nejen map:

$ perl -e '$,=","; print $a[0], scalar @a, "\n"; for ($a[0]) { print
$_, scalar @a, "\n" }'
,0,
,1,

U map a for dochazi k aliasovani $_ s tim prislusnym prvkem pole. Cimz
proste ten prvek toho pole vzniknout musi, protoze jinak by nebylo
s cim aliasovat (je muj naivni vyklad chovani).

Samozrejme pri map($_, @a) se to nestane.

Ty jsi v nejakem tymu, ktery odhaluje nejvetsi obskurnosti Perlu?
Nejaci Python fighters? ;-)

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
      ... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------


Další informace o konferenci Perl