PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PERL] Binäre Daten mit "carriage return"



exe
18-07-2005, 13:14
Hallo,

ich versuche Daten wie folgt herauszuziehen:

@bindata = $content =~ m{<DATA.*?DATA>}sg;

zwischen den Tags stehen binäre Daten z. B. Bilder. Sie enthalten u. A. auch das Zeichen (0x0D) "carriage return". Das ist unter Linux unproblematisch, unter Windows (ActivePerl) lässt er mir dieses Zeichen einfach aus (sprich das Bild ist hinterher beschädigt).

Vielleicht kennt einer von euch die Lösung dieses Problems. :-(

Joghurt
19-07-2005, 02:05
Bin zwar nicht der Perlexperte, aber ich denke, binmode löst dein Problem:
open (FILE, "Foobar");
binmode(FILE);

exe
19-07-2005, 08:18
Bin zwar nicht der Perlexperte, aber ich denke, binmode löst dein Problem
Nö der binmode löst es nicht. Das hatte ich schon so programmiert. :-(

michael.sprick
19-07-2005, 10:28
@bindata = $content =~ m{<DATA.*?DATA>}sg;

Damit hast Du aber immernoch '<DATA' & 'DATA>' in der jeweiligen komponente des @bindata Arrays...
Wenn Du auf diese Art eigentlich an den Teil zwischen <DATA und DATA> kommen willst, musst Du Klammern setzten. Aber das nur nebenbei...


Ich weiß leider nicht, wie sich der Modifier /s in Active Perl auswirkt, aber versuch mal die Kombination /sm...
Also:


my @bindata =~ m/<DATA(.*?)DATA>/smg;


Ansonsten wäre mal interessant, wie Du die Daten einliest. Benutzt Du read()?