![]() |
|< 1 2 3 4 5 6 7 ... 12 >| | ![]() |
113 Einträge, 12 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
sub parse {
my ($dir, $ref) = @_;
foreach my $entry (<$dir$dt*>) {
my ($name) =($entry =~ m/.*\/(.+)?$/); # basename
if (-d $entry) {
$ref->{$name} = {};
parse($entry, $ref->{$name}); # Rekursion
} else {
$ref->{$name}++;
}
}
} 1
2
3
4
5
6
7
8
9
10
11
12
sub print_struct {
my ($ref,$depth) = @_;
$depth++; # Tiefe für Tabs
foreach my $entry (sort keys %{$ref}) {
if( (ref $ref->{$entry}) eq 'HASH') {
print "\t" x $depth, $entry, "\=\>\n";
print_struct($ref->{$entry}, $depth);
} else {
print "\t" x ($depth), $entry, "\n";
}
}
} 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
#!/usr/bin/perl # # baumrekursion mit Tie::Dir # use File::Spec; use Data::Dumper; use Tie::Dir; sub scandir { my ($dir, $base) = @_; defined $base or $base = ""; my %this_dir = (); my $abs_dir = File::Spec->catfile ($base, $dir); tie my %dir, Tie::Dir, $abs_dir; foreach (grep {not m/^(\.|\.\.)$/} keys %dir) { my $dirptr = File::Spec->catfile ($abs_dir, $_); -d $dirptr and $this_dir{$_} = {scandir ($_, $abs_dir)} or -f $dirptr and $this_dir{$_} = ""; } untie %dir; return %this_dir; } my %dir = scandir (File::Spec->rel2abs (File::Spec->curdir ())); print Dumper \%dir;
![]() |
|< 1 2 3 4 5 6 7 ... 12 >| | ![]() |
113 Einträge, 12 Seiten |