Thread Hash durch if geändert? (8 answers)
Opened by bianca at 2010-01-15 20:16

bianca
 2010-01-15 20:54
#130625 #130625
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
2010-01-15T19:31:37 GwenDragon
Wenn du wissen willst, ob in einem Hash shon ein Eintrag ist, ohne ihn durch Perl automatisch erstellen zu lassen (Autovivication), musst du exists verwenden.

Das scheint jetzt mein akutes Problem nicht wirklich zu beheben, da folgender Code den gleichen "Mist baut":

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl -w
use strict;
use diagnostics;

my %hash;
$hash{1}{2}             = '123';

print "vorher:\n";
foreach my $xyz (sort {lc $a cmp lc $b} keys %hash) {
        print "$xyz=\'$hash{$xyz}\'\n";
}       

if (exists $hash{0}{2}) {
}

print "nachher:\n";
foreach my $xyz (sort {lc $a cmp lc $b} keys %hash) {
        print "$xyz=\'$hash{$xyz}\'\n";
}       


EDIT: Allerdings dauert die exists Abfrage etwa eine halbe Sekunde länger, das kann ich mit bloßem Auge erkennen. Warum? Keine Ahnung!
Last edited: 2010-01-15 20:56:18 +0100 (CET)
10 print "Hallo"
20 goto 10

View full thread Hash durch if geändert?