Natürlich sollte das kein Problem sein. Allerdings kann es passieren, durch Hochladen per SFTP oder SCP, dass eben aus einem Windows- oder Mac-Zeilenende kein Unix-Zeilenende wird.
Flugs landet das Skript auf dem Server und es wird sich später gewundert, warum es manchmal nicht klappt – jedenfalls wenn eine per SSH &. Co. schnell mal eben wechselt oder dann wieder per FTP hochlädt.
Das Problem ist meist der Shebang, also diese Zeile #!/usr/bin/perl, welche manchmal eben ein \r\n am Ende hat und was passiert dann? Der Server versucht das Skript an das Programm weiter zu reichen und es klappt nicht, denn ein Programm namens "perl\r" gibt es nicht.
Zu erkennen sind falsche Zeilenenden mit dem Programm od.
Ein od -c zeigt alle Bytes als einzelne Zeichen an und dann ist schnell das \r \n sichtbar.
Eine kleine Abhilfe, bei Perl ist das verwenden von -w als Schalter im Shebang.
Ein kleiner Nachteil sei allerdings nicht verschwiegen: Warnungen sind jetzt global an und können Nerven oder Logdateispeicher kosten, vor allem bei schlecht programmierten Modulen.
Irgendwie ein peinlicher Fehler, wenn eine nach Jahren der Perlprogrammierung darüber stolpert.

Kommentar für Blogeintrag
Vorschau des Kommentars
TrackBack-URL:
http://www.gwendragon.de/blog/Computer/Programmieren/Perl/newline-als-falle.html/trackback↑Blogeintrag