cgicorner.ch

Informationen rund um Perl/CGI

Sie sind hier: Home > Knowledge Base > Informationen über Zeilenumbrüche

Informationen über Zeilenumbrüche

  • Es wird immer wieder von UNIX-Zeilenumbrüchen gesprochen. Was ist da der Unterschied?
  • Ich kann in meinem Editor das CGI-Script nicht richtig darstellen, da keine Zeilenumbrüche dargestellt werden. Warum?
  • Gemäss Angabe des Entwicklers läuft mein Script nicht, weil ich falsche Zeilenumbrüche habe. Warum ist das so und wie kann ich es beheben?

Zeilenumbruch ist nicht gleich Zeilenumbruch. Verschiedene Betriebssysteme haben auch verschiedene Zeilenumbrüche. Hier die wichtigsten:

Betriebssystem Zeilenumbruch Zeilenumbruch dezimal Schreibweise in Perl
PC / MS-DOS CR LF 13 10 \r\n
UNIX LF 10 \n
Mac CR 13 \r

CR=Carriage Return (Wagenrücklauf) / LF=Line Feed (Zeilenumbruch)

Beim verarbeiten von Dateien mit falschen Zeilenumbrüchen können so diverse Probleme auftreten. Beispiel: eine Konfigurationsdatei beinhaltet diverse Einstellungen von Typ Variablename=Wert, jeweils ein Wert pro Zeile. Die Datei wird nun zeilenweise verarbeitet und in eine Variable geschrieben. Danach wird eine Eingabe in ein HTML-Formular mit dieser Variable verglichen (z.B. Benutzername). Gehen wir jetzt davon aus, dass die Eingabe in das Formular "test" lautet und die Datei im UNIX-Format abgepspeichert und bei \n getrennt wurde, haben wir auch in der Variable ein "test", Eingabe stimmt also. Wird die Datei aber irrtümlich im PC-Format abgespeichert und ebenfalls bei \n getrennt, lautet der Inhalt der Variable nicht wie gewollt "test" sondern "test\r" (DOS-Zeilenumbruch \r\n). Ein Vergleich dieser zwei Werte wird also immer FALSE sein.

Der Standard-Editor unter Windows (notepad.exe) ist in keiner Windows-Version in der Lage, UNIX-Zeilenumbrüche korrekt darzustellen, da er immer ein \r\n erwartet. Darum erscheint an Stelle der Zeilenumbrüche lediglich ein komisches Zeichen, so dass der Code unlesbar wird. Dies beweist nur einmal mehr, dass Notepad für die Entwicklung von Scripts nicht unbedingt brauchbar ist. Inzwischen gibt es deshalb hunderte von Texteditoren unter Windows, die solche Zeilenumbrüche beherrschen. Die einschlägigen Download-Archive helfen da sicher weiter. In dem Artikel Text-Editoren für Windows habe ich drei Editoren ausgewählt, die ich etwas genauer vorstellen möchte. Alle Programme beherrschein das Konvertieren zwischen den verschiedenen Zeilenumbruchsformaten.

Zudem habe ich noch einige Kommandozeilen-Programme geschrieben, welche Dateien zwischen den verschiedenen Zeilenumbruchsformaten hin- und her konvertieren können. Alle Programme sind sowohl aus ausführbare EXE-Dateien als auch als Perl-Scripts verfügbar. Das Programm "newline" konvertiert alle Formate zu allen Formaten, "topc" konvertiert eine Datei ohne Rückfrage ins PC-Zeilenumbruchsformat, "tounix" ohne Rückfrage ins UNIX-Zeilenumbruchsformat. Details dazu findet man in der Datei content.txt in den jeweiligen ZIP-Archiven. Links zum Download findet man am Schluss dieser Dokumentation.

Weiterführende Links

Autor: Jürg Sommer, knowledge@cgicorner.ch

[ zurück ]