Datei unter Perl im binary Format speichern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Datei unter Perl im binary Format speichern

Beitrag von eagle » 22.09.2004 11:20:55

Ich will unter Perl eine Datei nicht im Textformat, sondern im Binary Format speichern.

Code: Alles auswählen

#!/usr/bin/perl

open (FILE, ">file.bin") or die "cannot open file.bin\n";
binmode FILE;

my $i = 0x1a;
print FILE $;

close FILE
Leider enthält meine Datei statt des erhofften Inhalts "0x1a" nur "0x32 0x36". Kann mir vielleicht einer auf den richtigen Weg stossen?

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 22.09.2004 13:49:30

Hi eagle,

kenn mich mit perl ja nicht aus, aber müsste es nicht

Code: Alles auswählen

 print FILE $i;
heissen?


Gruß

Dookie

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 22.09.2004 13:57:20

Ja ich habe leider das i beim Schreiben des Postings unterschlagen, es ist im Orginal aber vorhanden.

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 22.09.2004 15:47:26

So die Lösung habe ich mit godsmacker Hilfe gefunden. Das Zauberwort heisst pack und das Ergebnis sieht danach so aus:

Code: Alles auswählen

#!/usr/bin/perl

open (FILE, "> file.bin") or die "cannot open file.bin\n";

for ( my $i=0; $i < 256; $i++ )
{
    print FILE pack("C", $i);
}
close FILE;
Der Wert von $i sollte dabei nicht größer als 255 werden, was in meinem Fall in Ordnung geht.

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

Antworten