Thread serial, dump - Komplexe Datenstrukturen speichern und ausgeben (12 answers)
Opened by mika at 2012-03-03 14:55

mika
 2012-03-07 21:20
#156685 #156685
User since
2010-10-02
168 Artikel
BenutzerIn

user image
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)

View full thread serial, dump - Komplexe Datenstrukturen speichern und ausgeben