Thread mehre dateien in eine kopieren (15 answers)
Opened by mark05 at 2011-03-21 11:00

rosti
 2011-03-22 10:34
#146746 #146746
User since
2011-03-19
3492 Artikel
BenutzerIn
[Homepage]
user image
Hoppla, der Algorithmus lässt sich weiter vereinfachen:

Weglassen der 4 byte am Anfang, die Anzahl der internen Dateien. Freude am Programmieren:
- neue Datei für Archiv öffnen, IO::File $fh
- schreibe in $fh die Länge der ersten Datei
- schreibe in $fh die bytes der ersten Datei
usw.
- undef $fh

Zum Auspacken:
DO
- lese 4 bytes, du bekommst die Länge in $len
- lese weiter mit $len, du bekommst den Inhalt
LOOP

Das ganze Geheimnis binärer Dateien (Sequenzen) liegt in der Verwendung von Längenangaben, wobei diese Angaben immer eine feste Anzahl an Bytes haben. So z.B. erzeugt pack "N", $zahl; 4 byte (32 Bit) mit dem Inhalt eines unsigned Integers. Die perldoc -f pack zeigt alle Schablonen und auch, was es mit little oder big Endian auf sich hat: "V" anstelle "N" dreht alle bytes rum, wenn vier bytes mit "N" als "WORD" gelesen werden können, sind diese mit "V" als "DROW" dann zu lesen (Integer: 1464816196).

Code: (dl )
1
2
3
4
my $i = 1464816196;
printf "Big Endian: %s, Little Endian: %s\n", pack("N", $i), pack("V", $i);

# Big Endian: WORD, Little Endian: DROW


Mehr dazu in meinem Artikel für $foo ;)

Mit Archive::Tar lässt sich das freilich auch sehr komfortabel machen, ohne den Spaß am Programmieren zu vermissen.

--Rolf

View full thread mehre dateien in eine kopieren