Ich hab ein Problem damit, dass Perl die Hashes intern umsortiert ohne eine Möglichkeit die vorgegebene Reihenfolge zurück zu bekommen.
Hi,
umsortiert ist nicht ganz richtig... Ein Hash ist in Perl uNsortiert . Die Reihenfolge der Elemente ist immer willkürlich.
Du kannst Dich aber selber um die Sortierung kümmern.
Alphanumerisch:
Code:
my %Hash = (
'hund' => 'wau',
'katze' => 'miau',
'kuh' => 'muh'
);
foreach(sort(keys(%Hash)))
{
print "$_ => $Hash{$_}\n";
}
oder nach Index:
Code:
my %Hash = (
'hund' => { 'index' => 0, 'value' => 'wau' },
'katze' => { 'index' => 1, 'value' => 'miau' },
'kuh' => { 'index' => 2, 'value' => 'muh' }
);
foreach( sort {$Hash{$a}{'index'} cmp $Hash{$b}{'index'}} keys(%Hash))
{
print "$_ macht $Hash{$_}{'value'} \n";
}
Wobei Du Dich um den Wert des Index selber kümmern musst... der wird nicht automatisch erzeugt, wie beispielsweise beim Füllen eines Arrays Hier wäre dann aber sichergestellt (vorausgesetzt, der Index ist richtig), dass alle Elemente in der Reihenfolge ausgegeben werden, wie sie auch zugewiesen wurden.
...was übrigens nichts an der Tatsache ändert, dass das Hash intern immernoch unsortiert ist.
hth, michael
Lesezeichen