ich hab schon wieder ein Problem und zwar hab ich ein Perlscript unter Linux geschrieben das eine einfache "Text" Datei nur mit Buchstaben und Zahlen erzeugt. Die Datei muss aber von einem Windows Rechner weiterverarbeitet werden aber der macht mir da wo eine neue Zeile anfangen sollte nur zwei komische Zeichen.
Hat jemand eine Idee wie ich das umwandeln kann (soviel ich weis gibts da Unterschiede zwischen Linux/Win) das die Datei korrekt in Windows weitererarbeitet werden kann?
Grüßle
Nina
esskar
2005-11-14 19:30
User since 2003-08-04
7321
Artikel ModeratorIn
wie erzeugst du denn die datei?
lichtkind
2005-11-14 19:36
User since 2004-03-22
5697
Artikel ModeratorIn + EditorIn
naja ne einfache regex tuts auch
$inhalt =~ s:\n:\r\n:g
kannst auch zeilenweise einlesen und letztes zeichen umfandeln aber erste lösung sollte reichen.
Also mein Script macht folgendes: ich lese aus einer Datei ( ist ein Auszug aus einer ELF mit objdump extrahiert) in ein Array ein und bearbeite das Array ( ich werfe Teile raus und füg neue Teile dazu) mit drei foreach Schleifen und schreibe mit printf in die neue Datei welche von Windows weiterverarbeitet werden soll.
lichtkind
2005-11-14 22:45
User since 2004-03-22
5697
Artikel ModeratorIn + EditorIn
es gibt in perl eine specailvariable der den zeilentrenner angibt
$/ den fütterst du mit dem win standart($/ = "\r\n") bevor du anfängst mit print dateien zu schreiben. dann hast du waschechte windows text dateien.
Bzw. $\ (siehe perldoc perlvar).
Dann darf man aber keine eigenen \n mehr verwenden, da sonst (mit $\ = "\r\n") bei print "blabla\n";
Quote
blabla\n\r\n
ausgegeben würde.
Und mehrzeilige print-Ausgaben sind auch nicht gut möglich.
I sense a soul in search of answers.
J-jayz-Z
2005-11-15 10:28
User since 2005-04-13
625
Artikel BenutzerIn
Na ja, die regex von Lichtkind tuts. Ich hatte auch ein riesen Problem gestern, weil ich ne Textdatei einlesen und verarbeiten musste, in der die Zugangsdaten für ne DB stehen und es ging nicht. Hab ewig nach dem Fehler gesucht und nach der regex gings dann.
Auf der Konsole: