Klaus: exit bei if/else?

Hallo Forum,
ich habe mit folgender Anweisung Probleme:
my $logFile = "c:/log.txt";
....diverse Anweisungen
if (open(FH,"+<$logFile")){
......
}
else{
exit;
}
....
Wenn log.txt nicht vorhanden ist, hängt sich das Script auf, obwohl es abbrechen sollte. Es läuft unter Apache und Win98 SE.
Ich habe fast den Verdacht, dass sich "exit" so nicht anwenden läßt.
Hat jemand eine Idee, woran das liegen könnte?
Gruß
Klaus

Solarstromerträge im Internet: www.tectosol.staticip.de

  1. Halihallo Klaus

    Wenn log.txt nicht vorhanden ist, hängt sich das Script auf, obwohl es abbrechen sollte. Es läuft unter Apache und Win98 SE.
    Ich habe fast den Verdacht, dass sich "exit" so nicht anwenden läßt.

    Nein. open lässt sich so nicht verwenden. Der Rückgabewert sagt überhaupt nichts über
    die Existenz der Datei aus. Du möchtest folgendes Konstrukt verwenden:

    unless (-e './log.txt') { exit; }

    Viele Grüsse

    Philipp

    1. Hallo Philipp,
      Danke für die schnelle Antwort und die Lösung.

      Du möchtest folgendes Konstrukt verwenden:

      unless (-e './log.txt') { exit; }

      Allerdings ist mir jetzt völlig unklar, was "if (open(FH,"+<$logFile"))" zurückgibt, denn "open ... or die" sollte ja auch funktionieren.
      Nochmals Danke und Gruß
      Klaus

      1. Halihallo Klaus

        Du möchtest folgendes Konstrukt verwenden:

        unless (-e './log.txt') { exit; }

        Allerdings ist mir jetzt völlig unklar, was "if (open(FH,"+<$logFile"))" zurückgibt, denn "open ... or die" sollte ja auch funktionieren.

        if (...) gibt gar nichts zurück, sondern open. open gibt einen definierten Wert zurück,
        falls die Datei geöffnet werden konnte (das hat nix mit Existenz zu tun! - Und das war
        der Fehler); und undef falls nicht. Wenn nun undef zurückgegeben wird, wird der
        "or die" - ausgeführt.

        Die Existenz einer Datei wird mit -e bzw. -f getestet.

        Viele Grüsse

        Philipp

        1. Hallo Philipp,

          if (...) gibt gar nichts zurück, sondern open. open gibt einen
          definierten Wert zurück,

          verstanden.
          Danke und Grüsse
          Klaus