Thread Ausgabe einer Zeile in Perl (18 answers)
Opened by Catherina at 2012-03-23 09:21

pq
 2012-03-26 11:01
#157033 #157033
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also der erste ansatz wäre ja recht einfach:
ein datensatz beginnt bei dir mit einer zeile mit "====> " am anfang, und der datensatz kann unterschiedlich viel zeilen haben und geht bis zum nächsten "====> ".
in jeder programmiersprache würde das also folgendermassen gehn, über ein flag:

lies zeile für zeile ein (hast du ja schon)
wenn das flag auf true gesetzt ist, lies die zeile in ein erray ein if ($flag) { push @wanted, $_ }
wenn eine zeile mit "====> " anfängt und flag auf false ist, dann setze das auf true. $flag = 1 if m/^====> /
wenn eine zeile mit "====> " anfängt und flag auf true ist, dann verlasse die schleife.last if (m/^====> / and $flag)

es kommt natürlich darauf an, welchen datensatz du eigentlich willst, du hast nur mehrmals gesagt, du willst genau einen datensatz, aber nicht welchen.

in perl gibt es für solche probleme aber noch eine einfachere lösung, die payx gezeigt hat (mit dem input record seperator $/)

zum schluss noch:
dein code-beispiel sieht sehr veraltet aus.
use strict fehlt, use warnings fehlt statt -w, keine lexikalische filehandles, in der fehlermeldung bei open fehlt die eigentliche fehlermeldung.
lies doch mal bitte z.b. Modern Perl oder ein anderes tutorial aus dieser liste: http://perl-tutorial.org/
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Ausgabe einer Zeile in Perl