Thread mehre dateien in eine kopieren
(15 answers)
Opened by mark05 at 2011-03-21 11:00
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 my $i = 1464816196; 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 |