Thread RDW #1 - Rätsel der Woche Nummer eins (112 answers)
Opened by Crian at 2004-07-08 21:52

steve
 2004-07-11 23:50
#83984 #83984
User since
2004-03-04
52 Artikel
BenutzerIn
[default_avatar]
@ Crian meine Lösung nicht bekommen?

Dann poste ich mal selbst.

Die Funktion zum parsen und eintragen in einen Hash:

Code: (dl )
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}++;
}
}
}



Und die Ausgabe, die ich mal selbst geschrieben hab. Habs halt ohne Module gemacht.

Code: (dl )
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";
}
}
}


steve
Antworten mit Zitat

View full thread RDW #1 - Rätsel der Woche Nummer eins