Hi, ich hab hier ein kleines Problem:
So, was will ich machen:Code:my $logfile = [blablablub unwichtig :) ] my @mystat; my $oncnt = 0; my $offcnt = 0; my $nacnt = 0; open LOGFILE, '<', $logfile or die "Kann Datei $logfile nicht zum Schreiben oeffnen: $!\n"; @mystat = <LOGFILE>; foreach (@mystat) { chomp(@mystat); if ($_ = 'online') { $oncnt++; } if ($_ = "offline") { $offcnt++; } if ($_ = "undefinierbare Zuweisung:") { $nacnt++; } } print "$oncnt Computer sind online\n"; print "$offcnt Computer sind offline\n"; print "$nacnt undefinierbare Zuweisungen\n"; close LOGFILE;
In dem Logfile stehen IP Adressen und daneben der Status des jeweiligen Computers
Bsp.: 127.0.0.1 -- online
Ich will es jetzt so auslesen können, das der Counter pro Zeile in der on oder off steht, sich 1 erhöht und am Ende das Ergebnis ausgegeben wird.
Das Problem ist, das mein Skript derzeit alle Zeilen zusammen zählt (derzeit 13 Zeilen) und am Ende zurück gibt, das es 13 PCs sind die an, aus und undefinierbar sind.
Das andere Problem:
Wenn ich $_ = nehme, meckert er herum, das ich lieber $_ == nehmen sollte. Wenn ich das mache, meckert er das die Wörter hinter dem == nicht nummerisch sind (was verständlich ist).
Ich denke mal das hier der Fehler liegt, jedoch weiss ich leider keine Lösung für mein Problem
Vll kann mir ja einer von euch weiterhelfen, wäre super. Danke![]()
-
01.09.2010, 10:58 #1
[Perl] Datensätze richtig aussortieren?
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
01.09.2010, 11:04 #2
[Perl] AW: Datensätze richtig aussortieren?
Das chomp auf die Liste macht irgendwie keinen Sinn ^^
Um alphanumerische Werte zu vergleichen gibts den Operator eq.
Versuchs mal so:
(Allerdings müssten die Schlüsselwörter online, offline usw. so je in einer separaten Zeile des Logs stehen, sonst musste zum vergleichen nen Regex nutzen. Evtl, machen da auch die Zeilenumbrüche probleme. Dann musst du Chomp am Anfang der Schleife auf $_ aufrufen.)
MFGforeach (@mystat)
{
chomp $_;
if ($bla eq "online")
{
$oncnt++;
}
if ($bla eq "offline")
{
$offcnt++;
}
if ($bla eq "undefinierbare Zuweisung:")
{
$nacnt++;
}
}
Geändert von Zimon (01.09.2010 um 11:11 Uhr)
Asrock 870 Extreme3 | Phenom II X4 955 Black | 8GB Kingston HyperX DDR3 | HD6850 | Corsair VX450 | Win 7 Pro x64 | Crucial M4 - 128GB | Filco MT2
Screw you guys, I'm going home.
-
01.09.2010, 11:40 #3
[Perl] AW: Datensätze richtig aussortieren?
Haha, Dankeschön, es funktioniert

Jetzt muss ich halt das Logfile umschreiben und es sieht nicht mehr so schön aufgeräumt aus, aber immerhin funktioniert es endlich, Danke nochmal
-
01.09.2010, 12:17 #4
[Perl] AW: Datensätze richtig aussortieren?
Wie gesagt, du kannst auch checken ob das Wort in der Zeile enthalten ist. Allerdings eben nicht mit eq. Stichwort: Reguläre Ausdrücke.
Ansonsten: Bitte.Asrock 870 Extreme3 | Phenom II X4 955 Black | 8GB Kingston HyperX DDR3 | HD6850 | Corsair VX450 | Win 7 Pro x64 | Crucial M4 - 128GB | Filco MT2
Screw you guys, I'm going home.


Zitieren