Thread Suchen von Unten nach Oben: Suchen von UNTEN nach OBEN (57 answers)
Opened by yasukatakaya at 2007-05-31 11:57

bloonix
 2007-06-06 12:48
#77128 #77128
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Oh je, warum hast du nicht das Codestück - die while Schleife - ersetzt,
die ich dir gepostet habe? In der Schleife wird genau bis $end_pos gelesen.

Kein Wunder, das es nicht funktioniert! Hier nochmal das Ganze Stück...
bei mir funktioniert es mit beiden Dateien, die du bislang gepostet hast.

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use strict;
use warnings;

my ($sachnummer, $kundennummer, $seriennummer, $starttest, $endetest);
my ($status, $result, $fehler, @fehler, $date, $start_pos, $end_pos);

open my $fh, '<', 'data1.txt' or die $!;

while (my $line = <$fh>) {
if (!$starttest && $line =~ /(\d\d)\.(\d\d)\.\d\d(\d\d)\s+(\d\d):(\d\d):(\d\d)/) {
$date = "$3$2$1";
$starttest = "$3$2$1$4$5$6";
} elsif (!$endetest && $line =~ /(\d\d):(\d\d):(\d\d)\s+(?: P\sA\sS\sS|F\sA\sI\sL)/x) {
$endetest = "$date$1$2$3";
} elsif (!$sachnummer && $line =~ /Sachnummer:\s*AATHD(\d+)\./) {
$sachnummer = $1;
} elsif (!$kundennummer && $line =~ /Kundennummer:\s*(\d+)/) {
$kundennummer = $1;
} elsif (!$seriennummer && $line =~ /Flexnummer:\s*([0-9\.]+)/) {
$seriennummer = $1;
$seriennummer =~ s/\.//g;
} elsif ($line =~ /PASS/) {
$start_pos = tell($fh);
} elsif ($line =~ /FAIL/) {
$end_pos = tell($fh);
}
}

if ($end_pos) {
$status = '01';
$result = 'Failed';

seek($fh, $start_pos, 0);
my $hit;

while (my $line = <$fh>) {
chomp($line);
last if $end_pos <= tell($fh);
$hit = 1 if $line =~ /^\z/;
push @fehler, $line if $hit;
}

$fehler = join(' ', @fehler);
$fehler =~ s/\s+/ /g;

} else {
$status = '00';
$result = 'Passed';
}

close $fh;

print "{\@BATCH|$sachnummer||GOEPEL_BSCAN||KDSNR:$kundennummer|ICT||PB/PL_P|uqm161|||\n";
print "{\@BTEST|$seriennummer|$status|$starttest|||||n|n|$endetest||1|\n";
print "{\@RPT|$result}\n";
print "{\@RPT|$fehler}\n" if $fehler;
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Suchen von Unten nach Oben: Suchen von UNTEN nach OBEN