Wenn ich diesen Code hier ausführe:
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
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @result;
my $file = '/path/to/file';
open my $fh,"<",$file or die $!;
local $/ = "\n...\n";
while(my $entry = <$fh>){
my $bool = 0;
my @lines = split /\n/,$entry;
my @aacc = grep{/^(?:AA|CC)/}@lines;
my @temp = grep{/^(?:BB|DD|EE)/}@lines;
if(grep{/Mercedes/}@aacc){
push @result,\@temp;
}
}
close $fh;
print Dumper(\@result);
my @headers = qw(BB DD EE);
my $format = "%-15s %-15s %-15s\n";
print sprintf($format,@headers);
for my $sresult(@result){
my @texte;
for my $head(@headers){
my ($line) = grep{$_ =~ /^$head/}@$sresult;
$line = " " unless $line;
my $text = (split /\s+/,$line,2)[1];
$text ||= " ";
push @texte,$text;
}
print sprintf($format,@texte);
}
Bekomme ich diese Ausgabe:
C:\>perl mercedes.pl
$VAR1 = [
[
'BB 230E',
'DD 400l Kofferraum',
'EE 132PS/ ??KW'
],
[
'BB 500SL',
'DD 150l Kofferraum',
'EE 350 PS'
]
];
BB DD EE
230E 400l Kofferraum 132PS/ ??KW
500SL 150l Kofferraum 350 PS