[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