Fuchs: Browserdarstellungsproblem unter Windows für .pl

Hallo

Ich habe schon einige perl scripts unter Linux mit CGI geschrieben, nun wollte ich das auch einmal unter windows versuchen, leider will mir der Browser meine perl datei immer öffnen anstatt den darin enthaltenen html Quellcode darzustellen.
Hier ein Beispiel das nicht funktioniert bei mir...
Wo liegt mein Fehler ?

#!/usr/bin/perl

use CGI;

print "Content-type: text/html\n\n";
#print "<meta http-equiv=refresh content='1; url=C:/kal/kal_rech.pl'>\n";
print"
<html>
<body bgcolor='#99AED7'>
<form name=eingabe action=C:/kal/kal_rech.pl method=POST>
<tr><td><P>Eingabe</P></tr>
<tr><td>Produkt<td>&nbsp<td><input type=text name=NEWprodukt size=20 value=' '><td>&nbsp
    <td>Kalorien<td>&nbsp<td><input type=text name=NEWkal size=6 value=' '><td>&nbsp
    <td>&nbsp<td>pro&nbsp<td><select name=mengein>
    <option>100g
    <option>100ml
    </select>&nbsp &nbsp
    <input type=submit name=send value='OK' size='10'>
    </td></tr>
</form>
</body>
</html>";

$form=new CGI;
$NEWprodukt=$form->param('NEWprodukt');
$NEWkal    =$form->param('NEWkal')    ;
$mengein   =$form->param('mengein')   ;

open (LOG,">>C:/kal/kdat.txt");
print "$NEWprodukt $NEWkal $mengein";
close (LOG);

  1. hi,

    Ich habe schon einige perl scripts unter Linux mit CGI geschrieben, nun wollte ich das auch einmal unter windows versuchen, leider will mir der Browser meine perl datei immer öffnen anstatt den darin enthaltenen html Quellcode darzustellen.

    dann hast du dort wohl perl nicht korrekt installiert.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi,

    mit dem Skript hat das überhaupt nichts zu tun.
    Hast Du überhaupt einen lokalen Webserver installiert und entsprechend konfiguriert? Das ist Voraussetzung, wenn Du das Skript auf Deinem Rechner laufen lassen willst. CGI-Skripte dürften nur in ganz bestimmten Verzeichnissen liegen, die dem Webserver entsprechend bekannt und als CGI-Verzeichnisse, bzw. zum Weiterleiten der Skripte an den Interpreter konfiguriert werden müssen.

    MfG
    Danny

    1. Wie dümmlich von mir.... jetzt wo du das sagst :) dange

  3. Wo liegt mein Fehler ?

    Du hast den Server entweder gar nicht installiert oder falsch konfiguriert.

    Aber noch eins:

    #!/usr/bin/perl

    use CGI;

    Besser:
    #!/usr/bin/perl -w

    use strict;
    use CGI;

    Das wird dir die Arbeit sehr erleichtern. Da du so Tippfehler oder nicht deklarierte Variabeln findest.

    print "Content-type: text/html\n\n";
    #print "<meta http-equiv=refresh content='1; url=C:/kal/kal_rech.pl'>\n";
    print"
    <html>
    <body bgcolor='#99AED7'>

    ....

    $form=new CGI;

    Les dir mal die Doku für das Modul durch, das kann noch viel viel mehr als nur die CGI Variabeln einlesen. Dafür sind über 200KB viel zu schade.

    (Die Doku liegt bei dir unter dem Perlverzeichniss dort in einem weiterem Verzeichbiss html und dort die index.html anklicken)

    Struppi.

    1. hallo Struppi,

      Wo liegt mein Fehler ?
      Besser:
      #!/usr/bin/perl -w

      Nö ;-)
      Es soll ja unter Windows laufen. Da hat ein Linux-Pfad in der Shebang leider keine Wirkung. Man kann sie allerdings im Server, also in der hrrpd.conf, "überschreiben" mit
        ScriptInterpreterSource registry

      Das wird dir die Arbeit sehr erleichtern. Da du so Tippfehler oder nicht deklarierte Variabeln findest.

      Dann sollte auch noch
        use CGI::Carp qw(fatalsToBrowser);
      dazukommen

      Les dir mal die Doku für das Modul durch, das kann noch viel viel mehr als nur die CGI Variabeln einlesen.

      Und vor allem kann es diese "print"-Anweisungen deutlich vereinheitlichen und schlanker halten.

      (Die Doku liegt bei dir unter dem Perlverzeichniss dort in einem weiterem Verzeichbiss html und dort die index.html anklicken)

      Das ist davon abhängig, wie Perl installiert wurde. Am günstigsten ist für Windows wohl immer noch ActivePerl, und da wird zwar die Doku "default" mitinstalliert, läßt sich aber auch disablen. Es gibt danach aber auch einen Eintrag im Startmenü.

      Grüße aus Berlin

      Christoph S.

      1. Wo liegt mein Fehler ?
        Besser:
        #!/usr/bin/perl -w

        Nö ;-)
        Es soll ja unter Windows laufen. Da hat ein Linux-Pfad in der Shebang leider keine Wirkung. Man kann sie allerdings im Server, also in der hrrpd.conf, "überschreiben" mit
          ScriptInterpreterSource registry

        Das hat nichts damit zu tun, die Warnung wird auch unter Window mit -w eingeschaltet.

        Das wird dir die Arbeit sehr erleichtern. Da du so Tippfehler oder nicht deklarierte Variabeln findest.

        Dann sollte auch noch
          use CGI::Carp qw(fatalsToBrowser);
        dazukommen

        Kann man, ja.

        (Die Doku liegt bei dir unter dem Perlverzeichniss dort in einem weiterem Verzeichbiss html und dort die index.html anklicken)

        Das ist davon abhängig, wie Perl installiert wurde. Am günstigsten ist für Windows wohl immer noch ActivePerl, und da wird zwar die Doku "default" mitinstalliert, läßt sich aber auch disablen. Es gibt danach aber auch einen Eintrag im Startmenü.

        Ja stimmt. Aber die das html Verzeichniss ist immer unter dem Perl Verzeichniss (wenn sie mit installiert wird, aber warum solte man das nicht tun)

        Struppi.

        1. hallo Struppi,

          Das hat nichts damit zu tun

          Mir gings nicht zuerst um den Schalter -w (mit dem Hinweis auf den Schalter hast du absolut recht), sondern um den shebang-Pfad.

          Ja stimmt. Aber die das html Verzeichniss ist immer unter dem Perl Verzeichniss (wenn sie mit installiert wird, aber warum solte man das nicht tun)

          Wenn man bisher nur mit Linux gearbeitet hat, kennt man den Pfad zu Dokumentationen im allgemeinen als /usr/share/doc oder ähnlich, die Doku liegt also in der Systemhierarchie an völlig anderem Ort als unter Windows, insofern ist dein Hinweis sicher sehr nützlich. Nur: man kann auf sehr verschiedenen Wegen zu einer Perl-Installazion kommen (man muß ja nicht das MSI-Paket von ActiveState nehmen), und da _kann_ es auch sein, daß es eben keine lokale Doku gibt.
          Außerdem: ich finde die Doku, die ich mir mit dem MSI-Paket installiert habe, sehr unübersichtlich. Informationen zu den Modulen kann man sich aber bei korrekt installiertem Perl auch unter Windows mit
            perldoc CGI (für das CGI-Modul)
          ausgeben lassen. Sonst schaue ich bei Informationsbedarf doch lieber in irgendeines der zahlreichen Tutorials, die unter http://links.perl-community.de/#Offizielle_Perl_Tutorials_und_Manuals verlinkt sind  -  eine sehr gute Sammlung, wie ich finde.

          Grüße aus Berlin

          Christoph S.

  4. Hi,

    ... der Browser ...

    "Der Browser"? Etwa der berühmt-berüchtigte?

    Oder alle? Wenn's nur im IE auftritt, der geht ab und zu mal nach Dateiendung...

    E7