000
16.01.2009, 20:53
LeJean
|
N'Abend!
Folgende Situation: Ich schreib grad so ein bisschen mit Perl rum und möchte die Ausgabe eines einzelnen ping-Commands etwas zerlegen und weiterverarbeiten.
$_ = `ping -c 1 www.google.de`;
if(/\n\d+[^\n\r]*time=(\d+.\d ms)\n/s) { print "Ping successful ($1)\n"; } else { print "Ping failed\n"; }
Dieser Code funktioniert grundsätzlich wie er soll: Der ping wird durchgeführt und wenn er erfolgreich war, dann wird das auch inkl. der Zeitangabe in ms ausgegeben. Ist der ping aber nicht erfolgreich wird mir - völlig rätselhaft - der Grund dafür ausgegeben, was ich aber nicht will.
Beispielausgabe:
Ping successful (39.7 ms) Ping successful (41.8 ms) ping: unknown host www.google.de connect: Network is unreachable Ping successful (39.8 ms)
Wie bitte kann das jetzt allein aufgrund obigen Quelltextes sein, dass aus der gesamten (ja etwas größeren) Ausgabe von `ping` dieser Grund extrahiert und angezeigt wird? Ich bin mir ziemlich sicher, dass die RegExp die Zeile nicht einschließt!
Editiert: Ich seh gerade, dass die Ausgabe von ping nur diese eine Zeile (sprich der "Grund") sein kann, wenn der Ping gänzlich fehl schlägt. Aber die kann trotzdem nicht auf die RegExp passen und darf vor allen Dingen nicht ausgegeben werden...
Danke, Jean
--
Dieser Beitrag wurde am 16.01.2009 um 20:57 von LeJean bearbeitet.
|
|
Profil || Suche
|
001
16.01.2009, 20:56
Bluthund
|
2> /dev/null ?
--
The C language combines all the power of assembly language with all the ease-of-use of assembly language. "humorig is n blödwort :>" by -CarniGGeLjumpR-
Dieser Beitrag wurde am 16.01.2009 um 20:57 von Bluthund bearbeitet.
|
|
Profil || Suche
|
002
16.01.2009, 21:00
LeJean
|
Ja astrein.. stderr in /dev/null umleiten geht natürlich. Danke ;)
--
|
|
Profil || Suche
|