Perl Problem mit Hashes

Florian Lohoff flo at rfc822.org
Fri Jan 26 21:29:08 CET 2001


On Fri, Jan 26, 2001 at 09:04:55PM +0100, Andre Landwehr wrote:
> On Fri, Jan 26, 2001 at 08:14:20PM +0100, Alexander Reelsen wrote:
> > sub ca { %tmp = %{$_[0]} ; ${$tmp}{i}++ };
> > $id{i} = 5 ;
> > ca \%id;
> > print "$id{i}\n"
> > 
> > Das Problem ist, dass "${$tmp}{i}++" keine Änderung im Hash bewirkt. Wie
> > also hat dieser Aufruf zu lauten. Oder habe ich mich irgendwie verrannt
> > und das ganze funktioniert so gar nicht, oder habe ich schlichtweg was
> > uebersehen?
> 
> so, da isser:
> 
> sub ca { %tmp = %{$_[0]} ; ${$_[0]}{i}++ };
> 
> legst halt einfach keine Kopie an sondern arbeitest mit der
> Referenz weiter, on the fly dereferenzieren dann immer.. nicht
> schön aber perlig ;-)

Ich behaupte das der original code und dieses hier eine boeser workaround
fuer falschen Programmieransatz ist :) Es funktioniert zwar ist aber
von hinten durch die Brust ins Auge.

Wenn code in 2 zeilen so kompliziert ist das man 30 Minuten braucht um 
ihn so zu korrigieren das er laeuft ist vom Loesungsansatz etwas
total falsch.

My 2 cents

Flo
-- 
Florian Lohoff                  flo at rfc822.org             +49-5201-669912
     Why is it called "common sense" when nobody seems to have any?





More information about the Linux mailing list