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
#! perl use warnings; use strict; open my $inFH, '<', 'meineEingabedatei' or die "$!"; open my $outFH, '>', 'meineAusgabedatei' or die "$!"; while (! eof($inFH)) { my ($variable_1, $variable_2); # Erste Zeile my $hansLine = <$inFH>; last if eof($inFH) or $hansLine !~ /\A HANS (\d{4}) (\d+) /x; if ($1 eq '9999') { $variable_1 = substr($2, 0, 3); } elsif ($1 eq '8888') { $variable_1 = substr($2, 0, 4); } elsif ($1 eq '7777') { $variable_1 = "FEHLER"; } last if ! defined $variable_1; # Zweite Zeile my $dampfLine = <$inFH>; last if eof($inFH) or $dampfLine !~ /\A DAMPF0000 (\d+) /x; $variable_2 = $1; # Dritte Zeile (nicht verwendet) my $gasseLine = <$inFH>; if ($variable_1 eq 'FEHLER') { print $outFH "Fehler, bitte manuell prüfen.\n"; } else { print $outFH "ZUSATZ_FORMAT_A $variable_1 " ."ZUSATZ_FORMAT_B $variable_2 " ."ZUSATZ_FORMAT_C\n"; } } close $inFH; close $outFH;
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
#! perl use warnings; use strict; open my $inFH, '<', 'meineEingabedatei' or die "$!"; open my $outFH, '>', 'meineAusgabedatei' or die "$!"; READ_HANS: while (my $hansLine = <$inFH>) { my ($variable_1, $variable_2); if ($hansLine =~ /\A HANS .* 9999 (\d{3}) /x) { $variable_1 = $1; } elsif ($hansLine =~ /\A HANS .* 8888 (\d{4}) /x) { $variable_1 = $1; } elsif ($hansLine =~ /\A HANS .* 7777 /x) { $variable_1 = "FEHLER"; } else { next READ_HANS; } # ab hier ist $variable_1 definiert READ_DAMPF: while (my $dampfLine = <$inFH>) { if ($dampfLine =~ /\A DAMPF .* 0000 (\d+) /x) { $variable_2 = $1; last READ_DAMPF; } else { next READ_DAMPF; } } last READ_HANS if ! defined $variable_2; # <-- ergänzt if ($variable_1 eq 'FEHLER') { print $outFH "Fehler, bitte manuell prüfen.\n"; } else { print $outFH "ZUSATZ_FORMAT_A $variable_1 " ."ZUSATZ_FORMAT_B $variable_2 " ."ZUSATZ_FORMAT_C\n"; } } # nächste HANSzeile suchen close $inFH; close $outFH;
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
use strict; use warnings; my %mapping = ( 9999 => 3, 8888 => 4, 7777 => -1, ); { local $/ = "GASSE\n"; while ( my $item = <DATA> ) { my %data; my ($steuer,$hans,$dampf) = $item =~ m{ HANS (\d{4}) (\d+) \s* DAMPF 0000 (\d+) }xms; my $length = $mapping{$steuer}; if ( $length > 0 ) { $hans = substr $hans, 0, $length; print sprintf "ZUSATZ_FORMAT_A %s ZUSATZ_FORMAT_B %s ZUSATZ_FORMAT_C\n", $hans, $dampf } elsif ( $length < 0 ) { print "Fehler, bitte manuell prüfen.\n"; } else { print "Format unbekannt\n"; } } } __DATA__ HANS9999123456789 DAMPF0000123456789 GASSE HANS8888123456789 DAMPF0000123456789 GASSE HANS7777123456789 DAMPF0000123456789 GASSE
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
use warnings;
use strict;
open(my $INPUT_DATEI, "<$ARGV[0]") or die "Fehler beim oeffnen: $!";
open(my $OUTPUT_DATEI, ">meine_output.txt") or die "Fehler beim oeffnen: $!";
while (my $OUT = <$INPUT_DATEI>) {
my ($variable_1, $variable_2, $variable_3);
chomp($OUT);
$OUT=~ s/^\t+//g;
$OUT=~ s/^\s+//g;
if ($OUT =~ /HANS/ ){
$OUT =~ s/HANS//;
$variable_1 = $OUT;
if ($variable_1 =~ /^8888/ ){
$variable_2 = substr($variable_1,0,4);
}
elsif ($variable_1 =~ /^7777/ ){
#$variable_2 = "FEHLER";
print $OUTPUT_DATEI "Fehler";
}
elsif {($variable_1 =~ /^9999/ ){
$variable_2 = substr($variable_1,0,3);
}
}
if ($OUT =~ /DAMPF0000/ ){
$OUT =~ s/DAMPF0000//;
$variable_3 = $OUT;
}
if ($OUT =~ /GASSE/ ){
print $OUTPUT_DATEI "ZUSATZ_FORMAT_A $variable_2 ZUSATZ_FORMAT_B $variable_3 ZUSATZ_FORMAT_C\n";
}
}
close $INPUT_DATEI;
close $OUTPUT_DATEI;