Moin!
warum nicht einfach so:
my %Punkte = (); #leeren des Hashes
foreach $dateiname (@dateien)
{
open(IN,$dateiname);
open(IN, "<$dateiname") or warn("Can't open $dateiname because: $!"), next;
while(<IN)
while(<IN>)
{
chomp;
my($name,$punkte) = split('=',$_); # oder irgendwas in der art
$Punkte{$name} += $punkte; # achte auf das '+=' (Doku perlop lesen)
}
close(IN);
}
Stimmt, diese Variante ist wohl vorzuziehen, zumindest solange es bei Namen und Punktestand bleibt (noch ein weiteres Feld wuerde dann doch wieder mehr Aufwand bedeuten).
foreach my $name ( sort {$Punkte{$a} cmp $Punkte{$b}} keys %Punkte)
muss <=> heissen, nicht cmp, denn es soll ein numerischer Vergleich durchgefuehrt werden, kein zeichenweiser
{
# sonst mach was mit der nach score sortierten liste
}
So long