Thread Informationen aus Datei lesen und formatieren (12 answers)
Opened by korkak at 2013-07-06 14:15

FIFO
 2013-07-06 16:15
#168755 #168755
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Hi,
wenn Deine Datei immer und ausschließlich aus diesen Zeilentripletts besteht, kannst Du z.B. immer 3 Zeilen einlesen:

Code (perl): (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
#! 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;


Das ist sozusagen eine Simpellösung für Deinen Spezialfall. Die Schleife bricht ab, sobald die Zeilen nicht Deiner Formatvorgabe folgen.
HTH, FIFO
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"

View full thread Informationen aus Datei lesen und formatieren