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