Thread Umgang mit Zero-byte separierten Listen... (4 answers)
Opened by hollandhasser at 2010-10-25 14:50

hollandhasser
 2010-10-25 14:50
#142160 #142160
User since
2010-10-25
1 Artikel
BenutzerIn
[default_avatar]
Hi all,

ich bräuchte hier als Perl-Neuling etwas Nachhilfe beim Basteln eines kleinen Perlskripts.

Worum gehts?

Ich habe ein mit Zero-bytes separiertes File:

Code: (dl )
"Hello World\0How are you today?\0Perl is cool!\0"


Was ich brauche, ist jedes Element einlesen, ausgeben, dann
dessen MD5 Fingerprint ausgeben, ebenfalls Zero-byte separiert.
In Pseudo-AWK ginge das so:

Code: (dl )
awk -F '\0' '{printf("%s\0%s\0",$1,md5sum($1))}' file > output


Mal abgesehen davon gibts keine md5sum Funktion in awk.

In Perl gibts MDigest::MD5.

Ich kann das schon Zeilenweise (newline-separiert lesen/schreiben) bewältigen in Perl:

Code: (dl )
1
2
tr '\0' '\n' < file |
perl -MDigest::MD5=md5_hex -lpe '$_ = sprintf("%s\n%s",$_,md5_hex $_)'


Jetzt die Frage:

Wie lese/iteriere ich das File Zero-Byte separiert, jedes Element wird einmal normal (1:1) ausgegeben, dann der Digest davon, beides getrennt von einem Zero-Byte?

Hier mein Pseudo-Code:
(der aber nicht so tut, wie ich mir das vorstelle...)

Code: (dl )
perl -MDigest::MD5=md5_hex -F'\0' -le 'printf("%s\0%s\0",$_,md5_hex $_)' < file > output


Wunschergebnis:

output :=
Code: (dl )
"Hello World\0b10a8db164e0754105b7a99be72e3fe5\0How are you today?\0eb7edd81af9146ea0ef9c9397ece0bc4Perl is cool!\082a8f26caedfc4c7586abd24c577908f\0"


Danke für alle Antworten und Anregungen im Voraus.

Gruss,
Benny.
Last edited: 2010-10-25 15:01:09 +0200 (CEST)

View full thread Umgang mit Zero-byte separierten Listen...