Hash überprüfen
Hannes
- perl
0 Beat0 Christian Kruse0 Beat
1 Christian Kruse0 Hannes
0 hotti
Hi,
ich bekomme eine Variable namens $var und hätte gerne den key dazu aus einem Hash. Nun kann es aber sein, dass es den Key garnicht gibt.
Ich hab das jetzt so abgefackelt:
if ($hash{$var})
{print $hash{$var};}
else {print "DAMN"};
Würdet ihr das auch so machen oder gibt es da einen "korrekteren" bzw. besseren Weg?
Danke.
ciao,
Hannes
ich bekomme eine Variable namens $var und hätte gerne den key dazu aus einem Hash. Nun kann es aber sein, dass es den Key garnicht gibt.
Ich hab das jetzt so abgefackelt:
if ($hash{$var})
Damit hast du $hash{$var} ins Leben gerufen mit dem Wert undef.
{print $hash{$var};}
Gibt nichts aus, weil undef
else {print "DAMN"};
DAMN
Würdet ihr das auch so machen
Ja aber nur als negatives Lernbeispiel.
oder gibt es da einen "korrekteren" bzw. besseren Weg?
siehe exists()
mfg Beat
你好 Beat,
if ($hash{$var})
Damit hast du $hash{$var} ins Leben gerufen mit dem Wert undef.
Das ist falsch. Siehe:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my %var = ();
print "Dumper 1: ",Dumper \%var;
print "Keys 1: ",join(",",keys %var),"\n";
print "Exists 1: ",exists($var{'abc'})?"true":"false","\n";
if($var{'abc'}) {
print "wahr\n";
}
print "Dumper 2: ",Dumper \%var;
print "Keys 2: ",join(",",keys %var),"\n";
print "Exists 2: ",exists($var{'abc'})?"true":"false","\n";
Ausgabe:
ckruse@sunshine ~ $ ./test.pl
Dumper 1: $VAR1 = {};
Keys 1:
Exists 1: false
Dumper 2: $VAR1 = {};
Keys 2:
Exists 2: false
ckruse@sunshine ~ $ perl -v
This is perl, v5.8.8 built for x86_64-linux
再见,
克里斯蒂安
你好 Beat,
if ($hash{$var})
Damit hast du $hash{$var} ins Leben gerufen mit dem Wert undef.
Das ist falsch. Siehe:
Wo du Recht hast hast du Recht.
mfg Beat
--
<o(((°> ><o(((°>
<°)))o>< ><o(((°>o
你好 Hannes,
Würdet ihr das auch so machen oder gibt es da einen "korrekteren" bzw. besseren Weg?
Du musst unterscheiden zwischen "hat dieser Schlüssel einen wahren Wert?" und "Gibt es diesen Schlüssel?"
Ersteres hast du abgefragt, letzteres würde man mit exists() prüfen.
再见,
克里斯蒂安
Du musst unterscheiden zwischen "hat dieser Schlüssel einen wahren Wert?" und "Gibt es diesen Schlüssel?"
Ersteres hast du abgefragt, letzteres würde man mit exists() prüfen.
Cool - Danke.
Habe es geändert und nun sieht es so aus (hab auch noch auf Referenzen umgestellt):
if (exists $ref_hash->{$var})
{$new=$ref_hash->{$var};}
else {$new="Damn";}
Und läuft einwandfrei.
ciao,
Hannes
Hi,
»
ich bekomme eine Variable namens $var und hätte gerne den key dazu aus einem Hash.
Sofern der hash eineindeutig ist, drehe den rum mit reverse:
my %rev_hash = reverse %hash;
Dann betrachte $var als key in %rev_hash.
Hotte