Thread Substring auf Vorhandensein überprüfen (9 answers)
Opened by Thomas at 2010-05-17 16:39

Linuxer
 2010-05-17 18:29
#137198 #137198
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Hi,

es wäre auch eine Lösung mit split() denkbar.
Hier ist u.U. die Daten-Spezifikation zu berücksichtigen (wann ist welche Spalte gefüllt)...

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
#!/usr/bin/perl
use strict;
use warnings;

while ( my $line = <DATA> ) {

    # nutze Magie von Perl's split() operator; Details: perldoc -f split
    my @fields = do { local $_ = $line; split; };
    my $anzahl = @fields;

    # anzahl kontrollieren
    if ( 8 == $anzahl ) {
        local $, = ' ';
        print $anzahl, ':', @fields[3..6], "\n";
    }

    elsif ( 2 == $anzahl ) {
        # vielleicht weitere checks um zu erfahren, welche Spalten man erwischt
        local $, = ' ',
        print $anzahl, ':', @fields, "\n";
    }
    # Fehlerfall
    else {
        local $, = ' ';
        print $anzahl, ':', @fields, "\n";
    }
}


__DATA__
0  000123456  Name           07/09      86,00       7,00       79,00R       0,00
              Vorname                                             8,00N


Wenn die Spalten immer fixe Größen haben, könnte man auch mit unpack() arbeiten; evtl. nachdem man die Länge
der Datenzeile verglichen hat (wenn verschiedene Längen auftauchen können, wie im Beispiel)...
Aber dazu wäre die Datenspezifikation interessant...
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Substring auf Vorhandensein überprüfen