Andreas Bierhals: Warteschleife spinnt - oder Perl kann nicht zählen...

Beitrag lesen

Hallo,

In der Timoutschleife wird die Uhrzeit 21:00 erwartet, um dann anschließend das Programm wieder erneut zu starten (goto Haupt).

So weit so gut, Das Script startet......läuft durch.......macht und tut....setzt um 07:00 Uhr in die Time_out Schleife aus......und startet 1,5 - 2 Stunden später wieder von neuem ...??Häh?

dazu gleich mal ne Frage: Wie sieht der Time-String aus, den Localtime liefert? Werden nur Stunden und Minuten oder auch noch Sekunden (z.B. gerade "17:11:18") geliefert? Ich vermute mal stark, daß die Sekunden auch mit ausgegeben werden, siehe z.B. <../../tgcl.htm>. Für den Fall versuch ich jetzt mal spaßeshalber, das ganze zu rekonstruieren <g>:

  • um 6:55:00 oder so wird vom Hauptprogramm in sub timeout { .. } gesprungen.
  • dort wird so lange eine while-Schleife durchlaufen, bis der Teilstring "21:" in $localtime vorkommt. Das dürfte z.B. um 7:21:00 Uhr passieren!
  • Mittels goto wird wieder in das Hauptprg. (Label haupt:) gesprungen (was nebenbei unüblich ist, aus subroutinen mit goto auszusteigen).
  • Dort wird aber sofort wieder der Teilstring "7:" in $localtime gefunden, da es ja 7:21:00 ist - und wieder in die Subroutine gesprungen.
  • Erst um 8:21:00 (das 2. mal mit "21:" innerhalb von $localtime) kann dann das Hauptprogramm fortgesetzt werden, also ca. 1 1/2 Stunden später.

Kann das Deine Beobachtungen erklären?

Viele Grüße

Andreas