gaby: erste Zeile #!/usr/bin/perl -w

weiß zufällig jemand wieso ich beim Ausführen meiner (beim Provider liegenden) Skripten, einen "internal server error" bekomme wenn ich in der ersten Zeile das w dahinterhänge?

#!/usr/bin/perl -w

mit

#!/usr/bin/perl

werden die Skripte ganz normal und einwandfrei ausgeführt

  1. Mit dem -w schaltest Du die "Warnings" ein. D.h. noch bevor Dein Script die Content-type Zeile zurückliefert gibt es ersteinmal ein paar Warnmeldungen.
    Jetzt könnte man natürlich meinen, -w einfach wegzulassen und die Warnungen zu ignorieren, viel besser wäre es aber diese möglichen Fehlerquellen auszuschließen, das Programm sauber zu erstellen um dann auch keine Warnungen mehr zu bekommen.

    Du benutzt doch sicherlich "use strict" (shame on you wenn nicht!). Dann sollten sich dich meisten Warnungen beim Testen Deines Scripts von Hause aus erledigen, da strict viele Unsauberkeiten gar nicht erst durchgehen lässt.

    Gruß, Stephan

    1. Hi,

      Dazu gibt es eine praktische Lösung, die ich gerne nutzte. Ich binde STDERR einfach an eine Datei. Dadurch wird nichts mehr vor dem Header ausgegeben, zumindest nichts an den Browser. Ausserdem kann man dadurch, auch wenn bei einem der Provider ist die einem keinen Zugang zum Log gestattet, viele (alle bis auf kompilierungsfehler) nachlesen, auch im Betrieb.

      mfg Andres Freund

  2. hi!

    weiß zufällig jemand wieso ich beim Ausführen meiner (beim Provider
    liegenden) Skripten, einen "internal server error" bekomme wenn ich
    in der ersten Zeile das w dahinterhänge?
    #!/usr/bin/perl -w
    mit
    #!/usr/bin/perl
    werden die Skripte ganz normal und einwandfrei ausgeführt

    Das liegt vermutlich daran, dass durch das -w eine Warnung ausgegeben
    wird, und zwar bevor du den notwendigen HTTP-Header ausgibst. Du
    solltest zb. das Error-Logfile der Domain konsultieren. Dort müsste
    die ausgegebene Warnung zu finden sein.

    bye, Frank!

    --
    Never argue with an idiot. He will lower you to his level and then
    beat you with experience.