Thread Hash sortieren (19 answers)
Opened by mikey_b at 2010-03-26 22:08

mikey_b
 2010-03-26 12:03
#135313 #135313
User since
2010-03-15
21 Artikel
BenutzerIn
[default_avatar]
Ich kann den hash nach Werten sortieren, wenn es definiert ist im Programm. Aber wenn ich es von einer Textdatei lese dann klappt das sortieren nicht.
Als Beispiel im ersten Programm klappt das:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
use strict;
my %hash = ("woche1" => "4",
"woche2" => "3",
"woche3" => "1",
"woche4" => "7",
"woche5" => "2");
my @keys_sorted = sort{ $hash{$b} <=> $hash{$a} }keys %hash;
for my $key ( @keys_sorted ) {
print "$key -> $hash{$key}\n";
}


aber wenn ich das ganze aus einer Textdatei: text.txt
woche1 4
woche2 3
woche3 1
woche4 7
woche5 2
mit dem skript:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
my %hash = ();
open (AN, '<', $ARGV[0] ) or die "$!\n";
while (my $line = <AN>) {
chomp $line;
my ($k, $v) = split / /, $line;
$hash{$k} = $v;

my @keys_sorted = sort{ $hash{$b} <=> $hash{$a} }keys %hash;

for my $key ( @keys_sorted ) {
print "$key -> $hash{$key}\n";
}
}

wird es nicht sortiert.
Was mache ich falsch ?

View full thread Hash sortieren