|< 1 2 >| | 12 Einträge, 2 Seiten |
1
2
C:\Dokumente und Einstellungen\Renee>perl -MCwd -e "print Cwd::realpath('.')"
C:/Dokumente und Einstellungen/Renee
1
2
3
C:\Dokumente und Einstellungen\Renee>perl -MFindBin -e "print $FindBin::RealBin"
C:/Dokumente und Einstellungen/Renee
1
2
3
4
5
6
7
@ordner =
qw(Ordnername1 0
Ordnername2 0
Ordnername3 1
Ordnername4 1
Ordnername5 0
...)
1
2
3
4
5
$s_dir = "C:/";
$a_dir = "Eigene Dateien";
# gesucht:
$a_dir = vollstaendiger_pfad_zum_ordner("$s_dir","*","$a_dir");
1
2
3
use File::Find::Rule;
# find all the subdirectories of a given directory
my ($subdir) = File::Find::Rule->directory->in( $s_dir )->name("$a_dir\$");
1
2
3
4
my $rule = File::Find::Rule->file->name("Eigene Dateien\$")->start( $s_dir );
while ( my $dir = $rule->match ) {
...
}
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
sub _dirs {
# Startverzeichnis wird geholt,
# und dann ist es nutzlos,
# weil ich leider den Fehler nicht finde
# weshalb er immer nur das Startverzeichnis
# durchgeht.
my $adir = shift;
my $ad = $adir;
my $r = 1;
my $pos = 0;
my @dirs;
$adir = "..";
DL:
opendir(DIR,"$ad") or goto R;
my @dl = grep { $_ !~ /\./ } readdir DIR;
close DIR;
if ($#dl < 0) {
goto R;
}
my $dl = join ";.ZAHL.;",@dl;
$dl .= ";.ZAHL.;";
$dl =~ s/\.ZAHL\./$r/g;
@dl = split ";",$dl;
splice(@dirs,$pos,0,@dl);
$r++;
foreach (@dl) {
chdir("$adir\/$_") or goto R;
my $aad = "$ad\/$_";
opendir(DIR,"$aad");
my @adl = grep { $_ !~ /\./ } readdir DIR;
closedir DIR;
if ($#adl >= 0) {
my $adl = join ";.ZAHL.;",@adl;
$adl .= ";.ZAHL.;";
$adl =~ s/\.ZAHL\./$r/g;
@adl = split ";",$adl;
splice(@dirs,$pos,0,@adl);
$pos += $#adl;
}
}
# Sehr unschön, aber was anderes
# ist mir nicht eingefallen.
# das ganze mit den hässlichen Labels...
goto DL;
R:
chdir($adir);
return @dirs;
}
1
2
3
4
5
6
7
8
9
C:/
+- Dokumente und Einstellungen
| |
| +- Matze
+- Programme
+- Perl
+- MeineTools
|
+- PDFTools
1
2
3
4
5
@array =
qw(C:/Programme 0
C:/Programme/Perl 1
C:/Programme/MeineTools 1
C:/Programme/MeineTools/PDFTools 2);
|< 1 2 >| | 12 Einträge, 2 Seiten |