Hi,
ich lese per
while (<INPUT>)
{
#whatever
}
Zeilen aus einem File und verarbeite sie.
Klappt wunderbar.
Das soll solange geschehen, bis die Zeile eine bestimmte Bedingung erfüllt. Auch noch kein Problem:
while (<INPUT>)
{
last if (m/endeersterabschnitt/);
#whatever
}
So, jetzt soll aber in einer zweiten Schleife der Rest des Files verarbeitet werden.
while (<INPUT>)
{
last if (m/endeErsterAbschnitt/);
#whatever, 1st part
}
while (<INPUT>)
{
#whatever, 2nd part
}
Funktioniert im Prinzip ja auch. Die Experten unter Euch werden aber bemerkt haben, daß eine Zeile nicht bearbeitet wird - nämlich genau die, die die Bedingung "endeErsterAbschnitt" erfüllt.
Sollte die mit #whatever, 1st part bearbeitet werden, wär das ja auch kein Problem - einfach Verarbeitung und Abbruch der Schleife austauschen.
Soll sie aber nicht - die muß mit #whatever, 2nd part beackert werden.
Ok, das ginge ja auch noch - wenn es in Perl sowas wie do { } while gäbe.
Jetzt kommt's aber noch dicker:
Die erste Schleife wird nicht immer ausgeführt, sondern nur, wenn eine bestimmte Bedingung erfüllt ist.
Das gesamte Konstrukt sieht also so aus:
if (bedingung)
{
while (<INPUT>)
{
last if (m/endeErsterAbschnitt/);
#whatever, 1st part
}
###
}
while (<INPUT>)
{
#whatever, 2nd part
}
An der mit ### markierten Stelle müßte ich jetzt eigentlich die bereits gelesene Zeile wieder in INPUT zurückschieben können, so daß das nachfolgende <INPUT> sie noch findet.
Geht das irgendwie? Wenn ja, wie?
TIA,
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.