2012-02-04T16:46:17
GUIfreund2012-02-04T13:57:58
pqzweitens vergleichst du in sort $a und $b, aber $a und $b sind array-referenzen, da wirst du also eher was zufälliges rausbekommen.
Ich vergleiche (zugegebener Weise ungewollt) Referenzen auf anonyme Arrays, sortiere also nach ihrer Erzeugungsfolge, letztlich also nach der Reihenfolge, in der die Dateinamen von readdir geliefert werden.
es gibt keine garantie, dass die speicheradressen der arrayreferenzen immer aufsteigend sind. und sind sie hier auch nicht.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
my @a;
for (0..10) {
my $ref = [$_];
push @a, $ref;
}
for (sort { $a cmp $b } @a) {
say "ref: $_ item: $_->[0]"
}
ref: ARRAY(0x833da18) item: 0
ref: ARRAY(0x8358198) item: 1
ref: ARRAY(0x83581b8) item: 6
ref: ARRAY(0x8358208) item: 4
ref: ARRAY(0x8358258) item: 5
ref: ARRAY(0x83582e8) item: 3
ref: ARRAY(0x8358338) item: 2
ref: ARRAY(0x83584a8) item: 8
ref: ARRAY(0x83584d8) item: 7
ref: ARRAY(0x8364ea0) item: 9
ref: ARRAY(0x8364ed0) item: 10
Last edited: 2012-02-04 18:04:11 +0100 (CET)