Thread IO::Socket Problem ... (16 answers)
Opened by weismat at 2005-07-04 01:56

Dubu
 2005-07-08 23:50
#37646 #37646
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=J-jayz-Z,08.07.2005, 15:33]Selbst wenn ich dann ein
Code: (dl )
$msg_out =~ s/\n/CRLF/g;

mache, geht es nicht.[/quote]
Damit ersetzt du jedes Perl-interne Newline durch die Zeichenkette "CRLF", also die Buchstaben C-R-L-F!

In Perl gibt es keine echten benannten Konstanten, deshalb werden Pseudokonstanten wie hier CRLF intern als Funktionen realisiert (aber effizient, weil sie inline ersetzt werden koennen, siehe "Constant Functions" in perlsub). In der Ersetzung oben kann auf der rechten Seite aber nur ein Text stehen, deshalb wird dort kein Funktionsaufruf vorgenommen. Um korrekt zu ersetzen, muss man Perl sagen, dass auf der Ersetzungsseite eine Funktion steht, deren Ergebnis eingesetzt werden soll:
Code: (dl )
$msg_out =~ s/\n/CRLF/eg;

Beachte die Option /e fuer "execute".
Damit wird jedes "\n" durch "\015\012", also Carriage Return gefolgt von Line Feed, ersetzt.
Man kann es auch noch expliziter als Funktion schreiben:
Code: (dl )
$msg_out =~ s/\n/CRLF()/eg;

View full thread IO::Socket Problem ...