1. #1
    Lieutenant
    Dabei seit
    Okt 2008
    Ort
    Erding
    Beiträge
    872

    [Perl] Datensätze richtig aussortieren?

    Hi, ich hab hier ein kleines Problem:

    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;
    So, was will ich machen:
    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

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Commander
    Dabei seit
    Mai 2007
    Ort
    -
    Beiträge
    2.269

    Arrow [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.)
    foreach (@mystat)
    {
    chomp $_;
    if ($bla eq "online")
    {
    $oncnt++;
    }
    if ($bla eq "offline")
    {
    $offcnt++;
    }
    if ($bla eq "undefinierbare Zuweisung:")
    {
    $nacnt++;
    }
    }
    MFG
    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.

  4. #3
    Lieutenant
    Ersteller dieses Themas

    Dabei seit
    Okt 2008
    Ort
    Erding
    Beiträge
    872

    [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

  5. #4
    Commander
    Dabei seit
    Mai 2007
    Ort
    -
    Beiträge
    2.269

    [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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •