Thread Ordnerstruktur in DB abbilden - evt. eigene DB (File) schreiben? (34 answers)
Opened by lousek at 2011-02-24 00:10

lousek
 2011-02-28 17:45
#146109 #146109
User since
2011-01-19
28 Artikel
BenutzerIn

user image
Hallo bianca,

Vielen Dank, dies hat soweit funktioniert.

Leider habe ich noch ein ziemliches Durcheinander mit den Referenzen etc.
Ich versuche eigentlich mit dem folgenden Script den "Hash-Tree" wieder zu Pfaden umzuwandeln ... aber irgendwie scheitere ich; das Script läuft endlos.

Was ich eigentlich möchte:
- Jedes "Element" durchgehen (%hash{data}{bla1}{ha1}{hi1}{he1}), den Pfad "erhöhen" (/data/bla1/ha1/hi1/he1) und überprüfen, ob es zu Ende ist (also ob keine Keys mehr unter diesem Element vorhanden sind).
- Wenn kein Key mehr vorhanden ist, Pfad in ein Array speichern und dann dieses Hash-Element löschen
- Dies solange machen, bis keine Elemente mehr im Hash sind, dafür sind dann alle Pfade im Array

Code: (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/perl -w

use Data::Dumper;

%ordner = (
data => { #/data
bla1 => { #/data/bla1
ha1 => { #/data/bla1/ha1
hi1 => { #/data/bla1/ha1/hi1
he1 => 0, #/data/bla1/ha1/hi1/he1
he2 => 1, #/data/bla1/ha1/hi1/he2
},
hi2 => { #/data/bla1/ha1/hi1
he1 => 0, #/data/bla1/ha1/hi2/he1
he2 => 1, #/data/bla1/ha1/hi2/he2
},
},
ha2 => { #/data/bla1/ha2
hi1 => { #/data/bla1/ha2/hi1
he1 => 0, #/data/bla1/ha2/hi1/he1
he2 => 1, #/data/bla1/ha2/hi1/he2
},
hi2 => { #/data/bla1/ha2/hi2
he1 => 0, #/data/bla1/ha2/hi2/he1
he2 => 1, #/data/bla1/ha2/hi2/he2
},
},
},
bla2 => { #/data/bla2
ha1 => { #/data/bla2/ha1
hi1 => { #/data/bla2/ha1/hi1
he1 => 0, #/data/bla2/ha1/hi1/he1
he2 => 1, #/data/bla2/ha1/hi1/he2
},
hi2 => { #/data/bla2/ha1/hi1
he1 => 0, #/data/bla2/ha1/hi2/he1
he2 => 1, #/data/bla2/ha1/hi2/he2
},
},
ha2 => { #/data/bla2/ha2
hi1 => { #/data/bla2/ha2/hi1
he1 => 0, #/data/bla2/ha2/hi1/he1
he2 => 1, #/data/bla2/ha2/hi1/he2
},
hi2 => { #/data/bla2/ha2/hi2
he1 => 0, #/data/bla2/ha2/hi2/he1
he2 => 1, #/data/bla2/ha2/hi2/he2
},
},
},
},
);

print Dumper(\%ordner);

my @pathes;

my $tmphash = \%ordner;
my @blubb = keys(%$tmphash);
while (keys(%ordner)) {
my $path = "";
print "Keys1: ".keys(%ordner)."\n";
print "Keys2: ".keys(%$tmphash)."\n";
while (keys(%$tmphash)) {
@parts = keys(%$tmphash);
$part = $parts[0];
$path .= "/".$part;
if(!keys(%{$tmphash->{$part}})) {
print $path."\n";
push(@pathes, $path);
delete $tmphash->{$part};
} else {
$tmphash = $tmphash->{$part};
}

print Dumper($tmphash);

}
}

foreach my $haha (@pathes) {
print "Path: $haha\n";
}


Irgendwie stehe ich an -.-

LG & vielen Dank
Lousek
Last edited: 2011-02-28 17:46:50 +0100 (CET)

View full thread Ordnerstruktur in DB abbilden - evt. eigene DB (File) schreiben?