Thread Frage zu Hash (15 answers)
Opened by jason-duff at 2006-01-16 12:13

jason-duff
 2006-01-16 14:46
#61937 #61937
User since
2005-10-11
23 Artikel
BenutzerIn
[default_avatar]
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
38
39
40
41
#use strict;
use warnings;

use File::Find;
no warnings 'File::Find';

my %dirs = ();
my $startdir = '.';

sub filter_for_rrd {
# filtere aus dem Verzeichnis alle rrd dateien heraus
my @files = grep /.*\.rrd$/, @_;
my @sorted_files = map{$_->[0]}sort{$a->[1] <=>$b->[1]}map{[$_,(split(/-|\./,$_))[-2]]}@files;
# filtere alle Unterverzeichnisse heraus
my @dirs = grep -d, @_;
# falls rrd Dateien vorhanden waren, speichere das Verzeichnis
# samt der Liste der Dateien in %dirs
$dirs{$File::Find::dir} = \@sorted_files if (@sorted_files);
# gib für File::Find die Liste der Verzeichnisse und der rrd Dateien
# zurück
return @dirs,@sorted_files;
}

sub process_rrd {
if (-f $_) {
# bearbeite einzelne rrd Datei hier, oder lasse die ganze
# process_rrd Subroutine einfach leer.

}
}

find({
preprocess => \&filter_for_rrd,
wanted => \&process_rrd },
$startdir);

# %dirs enthält jetzt einen Hash, dessen keys die Pfade zu allen
# Verzeichnissen mit rrd Dateien sind und dessen values jeweils
# Referenzen auf Arrays mit den rrd Dateien sind.
use Data::Dumper;
print Dumper \%dirs;


so untersuche ich die Verzeichnisse nach rrd dateien, falls es jemanden interessiert.

View full thread Frage zu Hash