![]() |
|< 1 2 >| | ![]() |
16 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
foreach my $dir (keys(%dirs)) {
my @array = (split (/\//,$dir));
if ($array[-1] == 'dirname1')
{
$array[-1] = 'dirname4';
my $path = join('/',@array);
function1($dir,$dirs{$dir},$path ,$dirs{$path} )
}
if ($array[-1] == 'dirname2')
{...}
.
.
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl -w
use strict;
my %dirs = (
'./space/dir/dirname1' => 'Wert1',
'./space/dir/dirname2' => 'Wert2',
'./space/dir/dirname3' => 'Wert3',
'./space/dir/dirname4' => 'Wert4',
);
my %other_dirs = (
dirname1 => 'dirname4',
dirname2 => 'dirname5',
dirname3 => 'dirname99',
dirname4 => 'dirname100'
);
foreach (keys %dirs) {
# matched bis zum letzten Slash, ein Slash muss enthalten sein
next unless /^(.+)\/(.+)$/ && exists $other_dirs{$2};
function1($_,$dirs{$_},"$1/$other_dirs{$2}",$other_dirs{$2});
}
1
2
3
4
5
6
7
8
my %dirs = (
'./space/dir/traffic' => 'Referenz',
'./space/dir/packetloss' => 'Referenz',
'./space/dir/JitterIN' => 'Referenz',
'./space/dir/jitterOUT' => 'Referenz',
'./space/dir/PacketLossIN' => 'Referenz',
'./space/dir/PacketLossOUT' => 'Referenz',
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $path = './space/dir/';
my %dirs = (
'traffic' => { array => 'Referenz', sub => \&traffic },
'packetloss' => { array => 'Referenz', sub => \&packetloss},
'JitterIN' => { array => 'Referenz', sub = \&iitter_in},
'jitterOUT' => { array => 'Referenz', sub = \&jitter_out },
'PacketLossIN' => { array => 'Referenz', sub => \&packet_loss_in },
'PacketLossOUT' => { array => 'Referenz', sub => \&packet_loss_out },
);
while (my ($dir, $value) = each %dirs) {
my @param = ($path, $value->{array});
$value->{sub}->(@param);
}
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;
![]() |
|< 1 2 >| | ![]() |
16 Einträge, 2 Seiten |