sprain: IE auf Mac hängt sich auf

Hallo zusammen

Ich habe da mal eine Fragen, bei der ich auf keine schlaue Antwort komme:

Ich hab ein Perl-Script geschrieben. Alles läuft wunderbar. Nur wenn man mit einem Internet Explorer auf MAC zugreift erscheint eine Fehlermeldung

"Fehler bei Zugriff auf http://www.xxxxx.xx/cgi-bin/script.cgi..."

Nicht jedesmal, aber oft.

Einige Tests haben jetzt ergeben, das es wahrscheinlich an folgendem Baustein liegt (als Hinweis: es wird eine bestehende HTML-Seite geöffnet, mit der sub ersetzen() bestimmte Platzhalter ersetzt und die Seite dann ausgegeben).

$bestellpath=$BASEDIR.$DIRDELIM.$BESTELL;
open(TEMPLATE, $bestellpath) die "Kann Template nicht oeffnen";
  $result_page = "";
  while (<TEMPLATE>) {
    ersetzen();
    $result_page .= $_;
    }
print "$result_page\n";

Was kann ich tun ? Wie gesagt, nur IE auf MAC. NS geht, auf Windows gehen sowohl IE als auch NS.

Dankeschön,
sprain

  1. Hi,

    "Fehler bei Zugriff auf http://www.xxxxx.xx/cgi-bin/script.cgi..."

    Nicht jedesmal, aber oft.

    was steht zu diesen Zugriffen im Server- und/oder Error-Log?

    Einige Tests haben jetzt ergeben, das es wahrscheinlich an folgendem Baustein liegt

    Tja, ich finde nicht, woran es liegen könnte... also hake ich mal nach:

    $bestellpath=$BASEDIR.$DIRDELIM.$BESTELL;

    $BASEDIR ist am Rootverzeichnis des Filesystems angelehnt, hoffe ich?

    »»  open(TEMPLATE, $bestellpath) die "Kann Template nicht oeffnen";

    In dem "or die" solltest Du _unbedingt_ $! und ggf. $? ausgeben lassen! Im Error-Log steht dann mehr.

    $result_page = "";

    Warum interpolierst Du einen Leerstring?

    $result_page = ''; # beachte die Singlequotes

    while (<TEMPLATE>) {
        ersetzen();

    Der Funktion solltest Du dringend den zu ersetzenden Wert übergeben, der dann mit return zurückgeliefert wird:

    $_ = &ersetzen($_); # eigene Funktionen mit &funktionsname aufrufen

    print "$result_page\n";

    Hm, das "\n" am Ende dürfte auch nicht schuld sein.

    Was kann ich tun ?

    Deine Scripts ein wenig verschönern:

    #!/usr/bin/perl -w
    use strict;

    statt nur

    #!/usr/bin/perl

    Der Fehler wird dadurch zwar auch nicht korrigiert werden, aber vielleicht findest Du einige andere, die Du ohne "-w"arnungen nicht bemerkt hast.

    Cheatah