Thread Subroutine & Arrays: Funktion zur Arrayerzeugung (11 answers)
Opened by Kristop8 at 2005-10-17 15:57

smallish
 2005-10-17 21:18
#58944 #58944
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
Du kannst es auch mit einem Hash machen:
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
use strict;
use warnings;

my $tree = {};
read_it('D:', $tree);

{
my $durchlauf;
sub read_it {
my ($dir, $tree) = @_;

my $name;
$name = (split(/\\/, $dir))[-1] if ($durchlauf);
$name = $dir unless ($durchlauf);
$durchlauf = 1;

my @file = ();
my @dir = ();

opendir(VERZ, $dir);
while (my $read = readdir(VERZ)) {
if (-d "$dir\\$read") {
push (@dir, "$dir\\$read") if ($read !~ /(\.)$/);
}
else {
push @file, $read;
}
}
closedir(VERZ);

$tree -> {$name} = { files => \@file };

foreach my $directory (@dir) {
read_it("$directory", \%{ $tree -> {$name} })
}
}
}

Nun kannst du die Files von jedem Verzeichniss mittels
@{ $tree{'D:'}-> {perlbsp} -> {files} } aufrufen
beinhaltet nur die Dateien aus D:/perlbsp ohne ordner
oder
print "$_\n" foreach @{ $tree{'D:'} -> {hello} -> {web} -> {files}
gibt die Dateien aus D:/hello/web aus

EDIT: Die einzahl von directories schreibt man nunmal mit y...\n\n

<!--EDIT|smallish|1129569621-->

View full thread Subroutine & Arrays: Funktion zur Arrayerzeugung