[vienna.pm] zeilenende unter unix/windows

roland.bauer at fff.at roland.bauer at fff.at
Thu Aug 16 02:44:33 CDT 2001


* * * vienna-pm-list * * *


Hallo Peter,

> Unter Dos ist das Zeilenende ja mit chr13/chr10 definiert.

Vollstaendig (in Hex):
\x0A ... unix
\x0D\x0A ... dos
\x0A\x0D ... mac


> Wenn ich nun eine Zeile aus einer Datei lese und das Zeilenende-
> Zeichen mittels chomp(@gelesenezeile) entferne, dann kann es mir 
> passieren, dass das Zeilenende-Zeichen nicht komplett entfernt wird.

> Frage: gibt es eine Moeglichkeit festzustellen, welche zeilen-Ende-
> Konvention in einer zu lesenden Datei liegt,

Die beiden letzten Zeichen abfragen.

> oder muss ich mir den 
> chomp-Befehl neu definieren?

Du musst nicht chomp verwenden. Du kannst es auch selbst machen:

s/\x0D?\x0A$//g; # sollte unter DOS und UNIX funktionieren

> Kann ich den chomp-befehl einfach ueberschreiben?

Wuerde ich nicht empfehlen.

Chomp verwendet $/, das koenntest Du ev. ueberschreiben.

Ich wuerde aber dann die Leseroutine kapseln, damit
$/ nur lokal umdefiniert wird:

# ...
# befehle
# ...
{
   # Einlesen:
   # Zeilenende herausfinden
   # Recordseperator umdefinieren
   local $/ = "\x0A"; # $/ darf keine Regex sein; hier local statt my
   # open und chomp verwenden
}
# weiter im Programm, es gilt wieder das "normale" $/

Roland

###
You are subscribed to vienna-pm-list as <roland.bauer at fff.at>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list