Thread Logfile durchsuchen (16 answers)
Opened by juma at 2009-09-17 14:57

sid burn
 2009-09-17 15:23
#125910 #125910
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
1)
Als erstes solltest du immer mit "use strict" und "use warnings" Programmieren. Damit treten schon sehr viele Fehler nicht mehr auf, die in deinem Code zu finden sind.

Zum Beispiel Zeile 18 deine Forschleife:
Code: (dl )
foreach $Line (Logpath)


Dort gehst du über das "Handle" "Logpath". Allerdiengs hast du "Logpath" nirgendswo vorher zugewiesen. Das was du genutzt hast war $Logpath in Zeile 13. Mit "use strict" hätte Perl dir diesen Fehler ausgegeben.

2)
Benutze bitte immer open() mit der drei anstatt der zwei argumente Form. Die zwei Argumente Form ist Fehlanfällig. Renne hatte darüber erst kürzlich einen Blog Eintrag darüber geschrieben die die Problematik zeigen. Diesen solltest du einmal lesen.

http://reneeb-perlblog.blogspot.com/2009/09/versch...

In deiner open Zeile ist mir nicht klar was du genau machen möchtest:
Code: (dl )
open ($Logpath, "<Log>");


Die zeile so wie sie dort steht bedeutet öffne die Datei "Log>" lesend.

Wolltest du vielleicht die Datei "<Log>" öffnen? oder Lesend/Schreibend öffnen?

Weiterhin solltest du bei einem "open" auch fehler abfangen. Sofern die Datei nicht geöffnet werden konnte, aber das steht auch im Blog Eintrag.

3) Aussage wie
Quote
Es schmeisst mir immer die Error message raus

sind leider nichts aussagend. Damit wir dir besser helfen können solltest du die Fehlermeldung auch nennen. Wenn du die Fehlermeldung nicht nennst können wir dir auch nicht sagen warum diese kommt.

4) Ansonsten da es sich um das auslesen um einer Logdatei handelt solltest du auch zumindest mal einen kleinen ausschnitt der Logdatei Posten, wenn ein Fehler beim erkennen eines Fehlers liegt können wir sowas nicht herausfinden, da wir das Format gar nicht kennen.

EDIT:
5) Etwas was mir sonst noch ins auge springt ist zeile 20:

Dort wolltest du bestimmt nicht der aktuellen Zeile ($Line) den Inhalt von $Variable (ürbigens ein schlechter name) zuweisen, und wenn das geklappt hat etwas ausgeben. Sondern eher etwas machen wie wenn der Inhalt von "$Variable" in $Line vorkommt etwas machen.

Wahrscheinlicht meintest du also eher etwas wie:
Code: (dl )
if ( $Line =~ m/$Variable/ )


---

Wenn du Glück hast behebt sich dein Problem von alleine wenn du 1) 2) beachtest, wenn nicht dann gebe noch die sachen an die ich in 3) und 4) nante.
Last edited: 2009-09-17 15:27:02 +0200 (CEST)
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Logfile durchsuchen