Thread serial, dump - Komplexe Datenstrukturen speichern und ausgeben
(12 answers)
Opened by mika at 2012-03-03 14:55
Also nochmal Danke an alle! Ich habe das nun die Tagen noch vernüftig gemacht und speicher den Hash of Lists als Zip Datei so:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ######################################################################## sub savehash { ######################################################################## my $hash = shift; my $path = shift; my $fh = new IO::Zlib; $fh->open ($path, "wb") or die $path . ": $!\n"; my $cnt; $cnt = keys %{$hash}; syswrite $fh, sprintf ("%03d", $cnt), 3; while (my ($id, $entrylist) = each %{$hash}){ syswrite $fh, sprintf ("%03d", length($id)), 3; syswrite $fh, $id, length($id); $cnt = @{$entrylist}; syswrite $fh, sprintf ("%03d", $cnt), 3; foreach my $entry (@{$entrylist}) { syswrite $fh, sprintf "%03d", length $entry, 3; syswrite $fh, $entry, length($entry); } } } ######################################################################## sub loadhash { ######################################################################## my $hash = shift; my $path = shift; my $fh = new IO::Zlib; $fh->open($path, "rb") or die $path . ": $!\n"; my ($cnt, $len); sysread $fh, $cnt, 3; for (my $fidcnt = $cnt; $idcnt > 0; $idcnt--) { my $id; sysread $fh, $len, 3; sysread $fh, $id, $len; sysread $fh, $cnt, 3; for (my $entrycnt = $cnt; $entrycnt > 0; $entrycnt--) { my $entry; sysread $fh, $len, 3; sysread $fh, $entry, $len; push @{$hash->{$id}}, $entry; } } } So hoffe hab beim verallg. der Variablennamen keinen Murks gemacht. Mir reicht das so - es tut was es soll. Ich setze den Title mal auf gelöst. --mika Last edited: 2012-03-07 21:40:30 +0100 (CET) |