Additionsprobleme
peterlein
- perl
Also, ich habe folgende Logdatei:
user_1 1
user_2 5
user_1 3
user_2 3
wobei user_n dem Usernamen entspricht und de Zahl dahinter die Anzahl der Seiten ist, die der User ausdruckt.
mit folgendem Script wird die Logdatei ausgewertet:
#!/usr/bin/perl -w
use strict;
open(LOGDATEI, "log.log") || die "Kann die Logdatei nicht öffnen!.\n$!";;
while (<LOGDATEI>) {
my ($user, $seiten) = split (/ /, $_);
print $_;;
}
close LOGDATEI || die "Kann die Logdatei nicht schliesse!.\n$!";
Was mir jetzt noch fehlt, ist eine Funktion, die mir die von den einzelnen usern ausgedruckten Seiten anzeigt. Die Anzahl der verschiedenen Usern liegt bei ca. 200 und die Anzahl der Seiten zwischen ca. 1 und 250!
Wäre schön, wenn mir jemand erklären (da ich Anfänger bin wäre ein Codeschnippsel mit Erklärung sehr hilfreich) könnte, wie ich das mache!
mfg
peterlein
Hallo Peter,
Also, ich habe folgende Logdatei:
user_1 1
user_2 5
user_1 3
user_2 3
mit folgendem Script wird die Logdatei ausgewertet:
[...]
while (<LOGDATEI>) {
my ($user, $seiten) = split (/ /, $_);
Du splittest die Zeile, verwendest aber die erzeugten Variablen nicht.
print $_;;
^......mehrfach aufeinanderfolgende Satzzeichen sind überflüssig!!!!! ;)
}
[...]
Was mir jetzt noch fehlt, ist eine Funktion, die mir die von den einzelnen usern ausgedruckten Seiten anzeigt. Die Anzahl der verschiedenen Usern liegt bei ca. 200 und die Anzahl der Seiten zwischen ca. 1 und 250!
Dazu kannst Du die beiden erzeugten Variablen in der Schleife im Zusammenhang mit einem Hash gut verwenden:
$anzahl_ausgedruckter_seiten{$user} += $seiten;
Wobei natürlich zuvor my %anzahl_ausgedruckter_seiten; als Deklaration im Code auftauchen muss.
Nach der Schleife kannst Du dann mit print $anzahl_ausgedruckter_seiten{user_1}; die Gesammtzahl der von user_1 gedruckten Seiten ausgeben.
Gruß Alex
Hallo Alex!
Vielen Dank für Deine Hilfe. Es sieht jetzt so aus:
while (my ($user, $anzahl) = each %anzahl) {
print "<tr>\n<td>$user</td>\n<td>$anzahl</td>\n</tr>\n";
}
und funktioniert. Wenn ich die ganze Sache jetzt allerdings noch sortieren lassen will, dann wird leider nach Seiten und nicht nach usern sortiert (...sort each %anzahl...)! Wie kann ich den Hash denn nach usernamen sortieren lassen?