newline löschen
Christian
- perl
Hallo,
ich hab ein kleines Problem mit dem fiesen newline in Perl.
Ich connecte zu meinem Perlprogramm per inetd. (also telnet localhost <port>). Wenn ich nun einen Befehl abschicke löscht mein Prog (genauer der Befehl chomp($tmp);) das newline nicht raus! in meinen Logs taucht folgendes auf: ERROR: re;26;1^M . Was ist dieses ^M und wie kann ich das löschen??? Mit $tmp = substr($tmp,0,-1); gehts jedenfalls auch nicht, da löscht er auch gleich die "1" mit weg.
Das komische ist, wenn ich das Programm per -> perl -w prog.pl
aufruf werden alle eingegebenen newlines (mit chomp($tmp)) ordnungsgemäß erkannt.
danke für eure Hilfe im Voraus!!!
Sup!
Manche Terminals/Betriebssysteme schicken \r\n, nicht nur \n als Zeilenendezeichen.
Das ist meist das Problem.
Gruesse,
Bio
Sup!
Manche Terminals/Betriebssysteme schicken \r\n, nicht nur \n als Zeilenendezeichen.
Das ist meist das Problem.Gruesse,
Bio
Jo, super vielen vielen Danke. Das wars.
ein kleiner Tipp für alle anderen, damit Ihr nicht den selben Fehler macht wie ich.
zum Nachlesen-> http://technocage.com/~caskey/dos2unix/
mit "strace telnet localhost <port>" ... kam folgendes raus:
---->
read(0, "wer;26;1\n", 8191) = 9
select(4, [0 3], [3], [3], {0, 0}) = 1 (out [3], left {0, 0})
send(3, "wer;26;1\r\n", 10, 0) = 10
<----
tatsächlich sendet das Terminal den string mit \r\n am Schluss.
... ich sagte doch: "fieses Teil" ;)
Christian