Schrift
[thread]8783[/thread]

exists() legt Hashkeys an (Seite 2)

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
esskar
 2007-02-24 18:36
#74527 #74527
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
aber ich hätte angenommen, dass $tmp = $hash{foo} den schlüssel foo erzeugt!?!
betterworld
 2007-02-24 18:38
#74528 #74528
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=esskar,24.02.2007, 17:36]aber ich hätte angenommen, dass $tmp = $hash{foo} den schlüssel foo erzeugt!?![/quote]
Nee, was soll denn da erzeugt werden?  Bei $hash{foo}{bar} wird $hash{foo} wie ein Hash behandelt, daher wird implizit einer angelegt.  Aber bei $tmp = $hash{foo} ist ja gar nicht klar, was da rein muss. Perl weiss ja nicht, ob da jetzt eine Hashreferenz oder eine Arrayreferenz oder irgend etwas anderes reinpasst.\n\n

<!--EDIT|betterworld|1172335194-->
esskar
 2007-02-24 18:52
#74529 #74529
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
bin total verirrt
wieso brauch ich den überhaupt den exists wen $hash{foo} nix anlegt

ich sollte nicht soviel trinken, ich weiß!
murphy
 2007-02-24 20:46
#74530 #74530
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
exists brauchst Du eigentlich nur, weil irgendein Spaßvogel auf die Idee kommen könnte, $hash{$key} = undef zu setzen, woraufhin sowohl $hash{$key} als auch defined $hash{$key} natürlich den boolschen Wert falsch haben, der Schlüssel $key in %hash aber trotzdem existiert -- da kann exists $hash{$key} Klarheit schaffen, denn das ist auch dann noch wahr.
When C++ is your hammer, every problem looks like your thumb.
betterworld
 2007-02-24 21:07
#74531 #74531
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=murphy,24.02.2007, 19:46]weil irgendein Spaßvogel auf die Idee kommen könnte[/quote]
Fuer alles gibt es sinnvolle Anwendungen. Ferner kann auch Perl selbst ein Spaßvogel sein:
Code: (dl )
1
2
3
4
5
$ perl -we 'use Data::Dumper; $foo{bar} =~ s/a/A/; print Dumper \%foo'
Use of uninitialized value in substitution (s///) at -e line 1.
$VAR1 = {
'bar' => undef
};
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-02-22 20:24.