MudGuard: aus <INPUT> gelesene Zeile wieder zurückschieben

Beitrag lesen

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.