Tausch: Sonderzeichen / Kommentare

Nach dem Upload meiner Perl-Scripts auf den Server, hat auf einmal jedes Script einen "Server-Error" hervorgerufen, obwohl auf meinem lokal eingerichteten Server (omnihttpd) noch alles funktioniert hat.
Also habe ich zuerst einmal stundenlang nach einem Fehler gesucht, konnte aber keinen finden. Also habe ich immer mehr Funktionen aus dem Script entfernt, um die Fehlerquelle einzuschränken. So habe nach langer Zeit durch Zufall bemerkt, dass der Fehler gar nicht im Programm selbst zu finden war, sondern in einem Kommentar!
Genauer gesagt: das gesamte Script hat nicht funktioniert, weil in einigen Kommentaren deutsche Umlaute vorkamen.
Nachdem ich diese entfernt habe, haben alle Scripts wieder einwandfrei funktioniert.

Nun meine Fragen:
Hat jemand bereits die selbe Erfahrung gemacht?
Wie kann man diese Fehlermeldung erklären?
Schließlich sollten doch
1. Kommentare keinen Einfluß auf das Script haben und
2. deutsche Sonderzeichen kein Problem darstellen, da Sonderzeichen innerhalb des Programmes erlaubt sind.
Wieso also der Programm-Absturz wenn es sich um erlaubte Perl-Zeichen handelt, die darüberhinaus vom Programm sowieso ignoriert werden sollten?

  1. Also habe ich immer mehr Funktionen aus dem Script entfernt, um die Fehlerquelle einzuschränken.

    "perl -w" und "use strict" hätten Dir eine aussagekräftige Fehlermeldung mit exakter Zeilennummer gegeben.

    So habe nach langer Zeit durch Zufall bemerkt, dass der Fehler gar nicht im Programm selbst zu finden war, sondern in einem Kommentar!
    Genauer gesagt: das gesamte Script hat nicht funktioniert, weil in einigen Kommentaren deutsche Umlaute vorkamen.

    Wenn Du ein Perl-Skript binär über Betriebssystemgrenzen überträgst und damit zwischen LF und CR+LF inkompatible Zeilenbegrenzer erzeugst, passiert etwas Ähnliches. (http://www.teamone.de/selfaktuell/artikel/schroepl03.htm#a5) Da ist Perl nun mal ziemlich kleinlich.

    Hat jemand bereits die selbe Erfahrung gemacht?

    Nicht mit Umlauten, in der Tat. (Seltsames Perl, das.)
    Zwischen welchen Plattformen (und Perl-Interpretern) hast Du denn Dein Skript wie übertragen? Ich kann mir den Effekt gar nicht vorstellen ...

    1. Ich habe die Dateien von einem Windows-NT-Rechner im ASCII-Format auf Unix übertragen. Zum Perl-Interpreter kann ich keine Angaben machen.

      Der Kommentar: # Gästebuch
      würde das Programm bereits zum Absturz bringen und folgende Fehlermeldung ausgeben:

      "Internal Server Error
      The server encountered an internal error or misconfiguration and was unable to complete your request.
      Please contact the server administrator, info@prosite.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.
      More information about this error may be available in the server error log.
      Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request."

      In dem Programm werden sogar deutsche Umlaute verwendet (z.B. $value =~ s/ä/ä/g;) und werden auch korrekt verarbeitet. Erst die Notierung innerhalb eines Kommentars ruft den Fehler hervor.

      Dieses Problem ist nicht nur bei einem Script aufgetreten, sondern bei nahezu allen, die ich auf den Server geladen habe.
      Der Fehler ist jederzeit reproduzierbar.

      1. Du hast geschrieben, die Option -w würde eine aussagekräftigere Fehlermeldung ausgeben (wie es ja auch in SELFHTML steht).

        Wenn ich die erste Zeile des Scripts jedoch in "#!/usr/bin/perl -w" abändere, wird gar keine Fehlermeldung mehr ausgegeben und das Script wird ganz normal abgearbeitet.

        1. Der Perl-Interpreter auf dem Server:

          version 5.005_03 built for i386-freebsd

          1. Ich habe soeben zwei kleine Testdateien auf den Server hochgeladen.
            Das erste Script erzeugt eine Fehlermeldung, das zweite (mit der Option -w) funktioniert jedoch.

            1. URL: http://server3.prosite.de/weltweit-suchen.de/cgi-bin/helloworld.pl

            #!/usr/bin/perl
            print "Content-type: text/html\n\n";
            print "Hello World"; # Hällo Wörld

            2. URL: http://server3.prosite.de/weltweit-suchen.de/cgi-bin/helloworld2.pl

            #!/usr/bin/perl -w
            print "Content-type: text/html\n\n";
            print "Hello World"; # Hällo Wörld

      2. Ich habe die Dateien von einem Windows-NT-Rechner im ASCII-Format auf Unix übertragen.
        Der Kommentar: # Gästebuch
        würde das Programm bereits zum Absturz bringen und folgende Fehlermeldung ausgeben:

        Exakt dasselbe mache ich ständig, ohne die von Dir beschriebenen Effekte.

        "Internal Server Error

        Was der Webserver dazu sagt, ist leider nicht sehr hilfreich.

        Führe das Skript mal auf der Unix-Maschine mit "perl <skriptname>" per Kommandozeile aus (via telnet oder was auch immer) und poste, was der Perl-Interpreter daran nicht mag. Der Fehler, der den Webserver stört, müßte auch in diesem Falle auftreten.
        (Daß dem Skript ggf. seine CGI-Umgebung fehlt, macht nichts, so weit kommt es ja offenbar gar nicht.)

        In dem Programm werden sogar deutsche Umlaute verwendet (z.B. $value =~ s/ä/ä/g;) und werden auch korrekt verarbeitet. Erst die Notierung innerhalb eines Kommentars ruft den Fehler hervor.
        Dieses Problem ist nicht nur bei einem Script aufgetreten, sondern bei nahezu allen, die ich auf den Server geladen habe.
        Der Fehler ist jederzeit reproduzierbar.

        Nicht bei mir.
        Deshalb hatte ich ja nach dem Perl-Interpreter gefragt (gib mal "perl -V" auf dem Server ein). Vielleicht ist der ja uralt oder kaputt ...