Hallo zusammen!
Ich verzweifele gerade, weil ich meinen Array nicht aus der Funktion raus kriege. Irgendwie finde ich jede Menge Tipps im Internet, und die sind lustigerweise auch alle einig. Aber entweder ich mach's total falsch, oder
nur bei mir klappt das nicht.
Meine Funktion an sich funktioniert super. Am Ende habe ich da innen drin in meinem Array eine Liste mit Verzeichnisnamen drin, die sich verändert haben auf meiner Festplatte.
Nun möchte ich zurück in die Hauptroutine hüpfen und mit diesen Verzeichnissen weiter arbeiten.
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
sub identify_changed_dirs {
my @dirs = "";
my $touchfile = $gcfounds2mysqlconfig{''}{'touchfile'};
my $gcdir = $geologconfig{''}{'directory'};
$gcdir .= "/found/";
my $timestamp = ( stat("$touchfile") )[9];
chdir($gcdir) or die "Error: Cannot change to working directory!\n $!";
print "DEBUG 1: changed to the working directory\n$gcdir\n";
opendir( DIR, '.' )
or die "Error: Working directory cannot be opened!\n $!";
my $i = 0;
while ( my $subdir = readdir(DIR) ) {
if ( $subdir eq "." ) { next; }
if ( $subdir eq ".." ) { next; }
if ( -d $subdir ) {
my $subdir_mtime = ( stat("$subdir") )[9];
if ( $subdir_mtime > $timestamp ) {
$i++;
print "Untersuchung fand $i. geändertes Verzeichnis!\n";
splice( @dirs, @dirs, 0, $subdir );
print @dirs[-1] . "\n";
}
}
print ".\n";
}
closedir(DIR);
return (\@dirs);
}
Im Hauptprogramm schaut es momentan so aus, aber das ist auch nur irgendeine Variante mit Backslash, @ oder $-Zeichen, die ich ausprobierte. Egal was ich mache, ich kriege immer nur die Anzahl der Listenelemente zurück, aber nicht die Werte selbst.
my $changed_dirs = identify_changed_dirs;
print "Changed Directories: ". @$changed_dirs ."\n";
Irgendwie habe ich mich verzettelt. Könnt ihr mir bitte einen Tipp geben ?
Vielen Dank und gute Nacht,
Marcus