datei zwei sieht nach einer INI-Datei aus... auf CPAN gibt es genuegend Module, die dir dabei helfen...
sonst vielleicht
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
my %data1 = ();
unless (open (FH1, $file1)) {
die ".....: $!\n";
}
while (<FH1>) {
chomp($_);
my ($key, $value) = split(/\s*=\s*/, $_, 2);
$data1{$value} = $key;
}
close (FH1);
my %data = ();
unless (open (FILE2, $file2)) {
die "Error in opening '$file2': $!\n";
}
else {
local $/; # alles auf einmal einlesen
my $content2 = <FILE2>;
close (FILE2);
$content2 =~ s/(^\s+|\s+$)//; # whitespace am anfang und ende killen
# aufsplitten nach \n[....]\n und [...] auch speichern; ok, man koennte es
# wohl auch direkt in einem hash speichern, aber so ist es fehlertoleranter
my @content = split(/\n(\[.+?\])\s*\n/, $content2)
my $key;
foreach my $entry (@content) {
if ($entry =~ /\[(.+)\]/) { # ueberschrift [...] feststellen
$key = $1;
next;
}
else { # muss der rest sein
foreach my $line (split(/\n/, $entry)) { # nach zeilen aufteilen
my ($subKey, $value) = split(/\s*=\s*/, $line, 2); # line nach = aufsplitten
# hier waere vielleicht eine ueberpruefung auf existenz nicht schlecht
%data{$key}->{$subKey} = $value;
} # foreach $line
} # foreach $entry
} # else
# ausgeben
foreach my $key (keys %data) {
print "[$data1{$key}]\n";
print "IP_GATEWAY = $data{$key}->{GATEWAY}\n";
print "VMAC = $data{$key}->{MACPREFIX}$data{$key}->{MAC}\n";
# ...
print "\n";
} # foreach $key
nicht getestet, aber vielleicht funktionierts ja... ein bisschen mehr fehlerueberpruefung waere wohl auch nicht schlecht...\n\n
<!--EDIT|Strat|1089063817-->