Christian Kruse: mysteriöses warning, warum?

Beitrag lesen

你好 Struppi,

So wie du es bisher gemacht hast erzeugst du automatisch neue Schlüssel
was u.U. andere Probleme hervorruft.

Ich gehe mal davon aus, dass du meinst, es werden neue Einträge in der
Tabelle hinzugefügt. Und das ist falsch. Neue Einträge werden nur durch
eine Wertzuweisung erstellt.

if $hash{key} -> prüft aud 0, '' und undef erzeugt einen neuen Schlüssel
wenn dieser nicht existiert

Falsch, siehe oben.

if defined $hash{key} prüft ob der Wert ungleich undef ist (d.h. 0 und
'' ist wahr nur undef ist unwahr), erzeugt keinen Schlüssel

Richtig.

if exist $hash{key} prüft ob der Schlüssel existiert, erzeugt keinen
Schlüssel

Richtig.

Prüfen kannst du das auch ganz leicht:

  
#!/usr/bin/perl -w  
  
use strict;  
  
my %hash = ();  
  
if($hash{test}) {  
  # nothing  
}  
  
if($hash{test} eq "") {  
  # nothing  
}  
  
if(defined $hash{test}) {  
  # nothing  
}  
  
if(exists $hash{test}) {  
  # nothing  
}  
  
print join(',',keys %hash),"\n";  

再见,
克里斯蒂安

--
<g[oma]> peter lustig ist auf jeden fall besser als peter huth, obwohl der auch lustig ist.