perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 18
Click for quality!




11.02.2012 / 22:30

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitrag$! formatieren
Seitenanfang
Hallo,

ich bin recht neu bei Perl, deshalb die vielleicht einfache Frage:
ich leite STDERR in ein Logfile um. Jetzt breche ich das Skript an einer Stelle mittels croak() ab. Innerhalb von croak() gebe ich $! aus:

croak ("Fehler blabla: $!");
Leider ist darin ein zeilenumbruch enthalten. Den möchte ich raushaben also habe ich das geschieben:

croak("Fehler blabla: ".$!=~s/^\n//);

Das funktioniert aber nicht. Wieso?

MfG

Wlet

Datum: 18.05.2006-14:01

Beitragre: $! formatieren
Seitenanfang
Weil du den Zeilenumbruch nur löschst wenn er am Anfang einer Zeile steht (^\n).

Mach es so:

croak("Fehler blabla: ".$!=~s/\n//);

oder noch besser so, falls mehrere Zeilenumbrüche vorhanden sind:

croak("Fehler blabla: ".$!=~s/\n//g);

bzw. wenn nur der abschließende Zeilenumbruch gelöscht werden soll:

croak("Fehler blabla: ".$!=~s/\n/$/);

Gruß TommyB

Datum: 18.05.2006-16:02

Beitragre: $! formatieren
Seitenanfang
Uppps, da hat sich der Fehlerteufel eingeschlichen...
Es muss natürlich so heissen:

...
bzw. wenn nur der abschließende Zeilenumbruch gelöscht werden soll:

croak("Fehler blabla: ".$!=~s/\n$//);

Gruß TommyB

Datum: 18.05.2006-16:04

Beitragre: $! formatieren
Seitenanfang
Hi,

danke für deine Antworten, aber das Dach ^ war nur aus Testzwecken noch dort. Ich hatte deine genannten regexp vorher schon durch (greedy, ohne Dach etc.).
Das Interessante ist aber folgendes:
ich habe als Ersetzungsmuster $!=~s/\n//
Ursprünglicher Fehlerstring ist folgender:
Fri May 19 06:10:12 2006 Unable to create Mailer deamon for host localhost at Port 25: Invalid argument
at Mailer.pl line 12

setze ich o.g. Ersetzungsmuster schneidet er mir "Invalid Argument" ab.

dann sieht die Zeile so aus:Fri May 19 06:10:12 2006 Unable to create Mailer deamon for host localhost at Port 25: at Mailer.pl line 12

Datum: 19.05.2006-08:14

Beitragre: $! formatieren
Seitenanfang
Hallo,
ich konnte ebenfalls Probleme beim ändern von $! feststellen. Wenn ich dich richtig verstanden habe willst du die Fehlermeldung auf der Konsole ausgeben.
Dann speicher $! doch in einer anderen Variablen und bearbeite diese.

$x = $!;
$x =~ s/\n//;

print $x;

Gruß TommyB

Datum: 19.05.2006-09:35

Beitragre: $! formatieren
Seitenanfang
hi,

also: Ich hab das jetzt mal so probiert. Ergebnis ist das gleiche.

Ich habe folgende kleine Funktion geschrieben:


sub formatErr{
my $err = shift;
$err =~ s/\n//g;
return "Bullshit";
}

Der Aufruf findet so statt:

... || croak(getTime()." Unable to create Mailer deamon for host $Init::config{ip} at Port $Init::config{port}: ".formatErr($!)."\n");

Ergebnis ist folgende Logzeile (im Übrigen mit zeilenumbruch):


Fri May 19 11:42:47 2006 Unable to create Mailer deamon for host 172.31.102.11 at Port 25: Bullshit
at Mailer.pl line 12

Wenn ich debugge, steht in der Variablen $err ein skalarer Wert " drin o_O

Irgendwie blicke ich das nicht.....

wlet

Datum: 19.05.2006-11:49

-






-
-