![]() |
|< 1 2 3 4 >| | ![]() |
31 Einträge, 4 Seiten |
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/perl
use strict;
use warnings;
use IO::File;
main();
sub main {
my $file = '85635.txt';
my $fh = new IO::File "< $file" or die "Can't open file '$file': $!";
<$fh>; # erste Zeile überlesen;
my $z2 = <$fh>; # zweite zeile lesen
die "falsches Dateiformat in Zeile 2" unless $z2 =~ /ODPS_\d+_\d+/;
my $z3 = <$fh>; # dritte Zeile Lesen
die "falsches Dateiformat in Zeile 3" unless $z3 =~ /Date\s*(\d+\.\d+\.\d+)\s*Time\s*(\d+:\d+:\d+)/;
my ($datum, $zeit) = ($1, $2);
print "Datum [$datum] Zeit [$zeit]\n"; # Testausgabe
my $state = 0; # Zustand: 0 = außerhalb eines DB-Blocks
# 1 = innerhalb eines DB-Blocks
my $dbname = ''; # Name der DB
my %ergebnis = ( # Ergebnishash
'Datum' => $datum,
'Zeit' => $zeit,
);
while (<$fh>) { # Rest der Datei lesen und dabei Verarbeiten
#
# Sind wir innerhalb eines DB-Blocks?
#
if ($state) {
#
# ist die gelesene Zeile leer?
#
if (/^\s*$/) {
$state = 0; # Status umsetzen
$dbname = ''; # DB-Namen löschen
}
#
# anderenfalls Werte ermiteln und abspeichern:
#
else {
/(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/;
push @{ $ergebnis{'DB'}->{$dbname} }, {
spalte1 => $1,
spalte2 => $2,
spalte3 => $3,
spalte4 => $4,
spalte5 => $5,
};
}
}
#
# Sonst sind wir außerhalb:
#
else {
if (/(KDY_.*\s*)$/) {
$state = 1; # Status umsetzen
chomp($dbname = $1); # DB-Namen löschen
print "DB [$dbname]\n"; # Testausgabe
}
}
}
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;
print Dumper \%ergebnis;
}
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
$VAR1 = {
'DB' => {
'KDY_bgn_seq' => [
{
'spalte1' => 'bgn_5px',
'spalte2' => '2.000000',
'spalte3' => '0.000000',
'spalte4' => '0.000000',
'spalte5' => 'Fail'
},
...
],
'KDY_lines_seq' => [
{
'spalte1' => 'line_lpvs',
'spalte2' => '0.237976',
'spalte3' => '0.170000',
'spalte4' => '0.230000',
'spalte5' => 'Fail'
},
{
'spalte1' => 'line_lpvl',
'spalte2' => '0.399231',
'spalte3' => '0.260000',
'spalte4' => '0.300000',
'spalte5' => 'Fail'
},
...
],
'KDY_os_45_seq' => [
{
'spalte1' => 'offset_45',
'spalte2' => '1.089027',
'spalte3' => '0.000000',
'spalte4' => '8.000000',
'spalte5' => 'Pass'
}
],
'KDY_printpos_seq' => [
{
'spalte1' => 'Coordinate_TLX',
'spalte2' => '-29.523100',
'spalte3' => '0.000000',
'spalte4' => '0.000000',
'spalte5' => 'Fail'
},
...
],
'KDY_sharpness_seq' => [
{
'spalte1' => 'sharp_tlv',
'spalte2' => '0.056915',
'spalte3' => '0.090000',
'spalte4' => '0.150000',
'spalte5' => 'Fail'
},
...
}
],
'KDY_threshold_seq' => [
{
'spalte1' => 'white_max',
'spalte2' => '163.038700',
'spalte3' => '175.000000',
'spalte4' => '245.000000',
'spalte5' => 'Fail'
},
{
'spalte1' => 'black_max',
'spalte2' => '3.621212',
'spalte3' => '0.000000',
'spalte4' => '30.000000',
'spalte5' => 'Pass'
}
],
'KDY_tilt_seq' => [
{
'spalte1' => 'tilt_meas_1',
'spalte2' => '29.621620',
'spalte3' => '10.000000',
'spalte4' => '15.000000',
'spalte5' => 'Fail'
},
...
]
},
'Datum' => '15.09.2005',
'Zeit' => '11:35:54'
};
1
2
3
4
5
6
7
8
9
10
my $file = '/path/to/file';
{
local $/ = "\n\n";
open(my $fh,"<$file") or die $!;
while(my $entry = <$fh>){
# bearbeite Datensatz
}
close $fh;
}
die "falsches Dateiformat in Zeile 2" unless $z2 =~ /ODPS_\d+_\d+/;
1
2
3
4
5
6
7
#
# ist die gelesene Zeile leer?
#
if (/^\s*$/) {
$state = 0; # Status umsetzen
$dbname = ''; # DB-Namen löschen
}
![]() |
|< 1 2 3 4 >| | ![]() |
31 Einträge, 4 Seiten |