kickerxy123
Erfahrenes Mitglied
Hallo zusammen,
ich habe ein Problem mit Perl. Da ich mit der Skriptsprache erst seit einem Tag arbeite, bin ich noch nicht ganz sicher im Umgang mit Perl...
Hier zunächst der relevante Code:
Leider ist der Output nicht so ganz das, was ich erwartet habe.
Output (IPs verändert):
Besonders auffällig: Jede zweite Zeile hat als IP HASH(...). Weiterhin kann die Sizegröße nicht stimmen, da sie bei allen Hashes gleich ist.
Vielleicht ist auch noch nicht ganz klar, was ich bezwecken will. Daher:
in dem 2D-Array Rows stehen je Zeile IP, filename, Größe
row[1] == IP
row[-1] == Größe
row[-2] == Filename
diese sollen nun nach IP aggregiert werden mittels dem Hash. Ich will also je IP Adresse wissen, welche Dateinamen zugeordnet sind und wieviel Byte das insgesamt sind.
Ich denke, dass es nur eine Kleinigkeit ist. Ich bin dennoch für jede Hilfe dankbar!
Vielen Dank und Grüße
kickerxy
ich habe ein Problem mit Perl. Da ich mit der Skriptsprache erst seit einem Tag arbeite, bin ich noch nicht ganz sicher im Umgang mit Perl...
Hier zunächst der relevante Code:
Code:
my @rows = getRows(...........); #@rows ist ein 2D-Array!
my %aggSize = undef;
foreach my $row(@rows) #row is an array, since rows is a 2d array therefore access is @$row and not $row
{
if(exists $aggSize{@$row[1]})
{
$aggSize{@$row[1]}->{size} = "".(int($aggSize{@$row[1]}->{size}) + int(@$row[-1]));
$aggSize{@$row[1]}->{name} = $aggSize{@$row[1]}->{name} . ",\"" . @$row[-2] . "\"";
}
else #neuer key, hash ergänzen
{
%aggSize = (%aggSize, @$row[1] => { size => @$row[-1], name => "\"".@$row[-2]."\""}); #hash of hash
}
}
foreach my $ip(%aggSize) #ip is a hash since aggSize is a 2d hash therfore access with %$ip rather than $ip
{
printf "IP: " . $ip . "\tSize:" . formatBytes($aggSize{%$ip->{size}}) . "\tFiles: " . $aggSize{%$ip->{name}} . "\n";
}
Leider ist der Output nicht so ganz das, was ich erwartet habe.
Output (IPs verändert):
Code:
IP: 20.20.20.21 Size:149.53 MBytes Files: HASH(0x9587e30)
IP: HASH(0x94932a8) Size: Bytes Files:
IP: 20.20.20.20 Size:149.53 MBytes Files: HASH(0x9587e30)
IP: HASH(0x962eff8) Size: Bytes Files:
Besonders auffällig: Jede zweite Zeile hat als IP HASH(...). Weiterhin kann die Sizegröße nicht stimmen, da sie bei allen Hashes gleich ist.
Vielleicht ist auch noch nicht ganz klar, was ich bezwecken will. Daher:
in dem 2D-Array Rows stehen je Zeile IP, filename, Größe
row[1] == IP
row[-1] == Größe
row[-2] == Filename
diese sollen nun nach IP aggregiert werden mittels dem Hash. Ich will also je IP Adresse wissen, welche Dateinamen zugeordnet sind und wieviel Byte das insgesamt sind.
Ich denke, dass es nur eine Kleinigkeit ist. Ich bin dennoch für jede Hilfe dankbar!
Vielen Dank und Grüße
kickerxy