Thread 2 array Fragen. (47 answers)
Opened by galaxy at 2006-04-13 12:27

Dubu
 2006-04-21 00:42
#64869 #64869
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Es ist doch Unsinn, den Hash nochmal in einem Array zu speichern (ob jetzt als Referenz oder Kopie), wenn es nur um die Reihenfolge der Elemente geht.

Wenn man weiß, dass die Hashkeys definitiv verschieden sind, kann man es so machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
while (...) {
   ...
   $hash{$header} = $inhalt;
   push @keys, $header;
   ...
}
...
for my $key (@keys) {
   print "$key => $hash{$key}\n";
}


Wenn man sich mit den Schlüsseln nicht sicher ist, kann man auch die Struktur etwas komplizierter machen und einen Zähler einbauen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
my $cnt = 0;
while (...) {
   ...
   $hash{$header} = [$cnt, $inhalt];
   ++$cnt;
   ...
}
...
for my $key (sort { $hash{$a}[0] <=> $hash{$b}[0] } keys %hash) {
   print "$key => $hash{$key}[1]\n";
}

(ungetestet)

Im allgemeinen Fall ist wohl die Verwendung von CPAN:Tie::IxHash besser.

View full thread 2 array Fragen.