#!/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"; }