[Vienna-pm] Zeilenumbruch ersetzen

Fabio Valeri fabio.valeri at bluewin.ch
Fri Dec 5 12:29:32 PST 2008


Hallo,

Ich bin mir nicht sicher, ob ich hier mit meinem Problem richtig bin. 
Falls nicht, wäre ich froh um ein Tip für eine entsprechende 
Perl-Mailing-Gruppe. Ich benutze Perl gelegentlich und bin nun auf 
folgendes Problem gestossen..

technische Umgebung:
XP, ActivePerl 5.10.0.1004, OpenOffice 2.4.1

Ich exportiere Daten aus einem OpenOffice Spreadsheet (.ods) als 
csv-Datei und erhalte folgendes:

*******************************
A;B;C;D
dom1;extra1(.)z0001;sdf1
dom2;extra2(.)z0002;sdf2
dom3;extra3(.)z0002;sdf3

********************************

Hier ist anzumerken, dass (.) für ein Zeilenumbruch steht. D.h., das in 
den Zellen des Spreadsheet in der Kolonne C Zeilenumbrüche vorhanden 
sind. Semikoklon ist der Delimiter. In Notepad wird der Zeilenumbruch 
als kleines Vierreck dargestellt ohne Zeilenumbruch. In Emacs findet 
der  Zeilenumbruch statt und am Ende einer Zeile steht ^M. Wenn ich das 
csv-File mit Emacs im Hexadezimal-Modus anschaue, erhalten ich an der 
Stelle (.) Oa.

Ich möchte nun diese csv-Datei einlesen und die Zeilenumbrüche Oa 
ersetzen mit  xxx.  Dazu habe ich folgendes geschrieben:

********************************
while (<INPUT>) {

    $row0 = $_;
    $row0 =~ s/\x0a/xxx/g;   # Konvertierung von Zeilenumbruch nach xxx
    print OUTPUT1 $row0,\n;
    print OUTPUT1 "<tr>","\n";
}
********************************

Als OUTPUT erhalten ich (erste Zeile beabsichtigt nicht eingelesen):
********************************
dom1;extra1xxxSCALAR(0x239cd4)<tr>
z0001;sdf1xxxSCALAR(0x1829984)<tr>
dom2;extra2xxxSCALAR(0x1829994)<tr>
z0002;sdf2xxxSCALAR(0x1829984)<tr>
dom3;extra3xxxSCALAR(0x1829994)<tr>
z0002;sdf3SCALAR(0x1829994)<tr>
********************************

Es ist also folgendes passiert:
1. Oa wurde nach xxx umgewandelt
2. Es wurde etwas hinzugefügt, z.B. SCALAR(0x239cd4)
3. es findet ein Zeilenumbruch statt

Mein Wunsch wäre gewesen:
************************************
dom1;extra1xxxz0001;sdf1
dom2;extra2xxxz0002;sdf2
dom3;extra3xxxz0002;sdf3
************************************

Die Idee dahinter ist, dass ich die Zeilenumbrüche in Spreadsheet-Zellen nach xxx konvertieren möchte, um Probleme zu vermeiden.

Ich bin für jede Hilfe dankbar.

Gruss

Fabio 


 



More information about the Vienna-pm mailing list