Thread Substring auf Vorhandensein überprüfen
(9 answers)
Opened by Thomas at 2010-05-17 16:39
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! |