Yoshiro has asked for the wisdom of the Perl Monks concerning the following question:

Hello Perl Monks

Im new to all the web technologies so i apologies if what i say may seem to lack sense from time to time. I'm learning perl and i installed xampp 1.7.7 as a local server so i can run/test some scripts. Im running Win 7 and installation was done straight on C:'\

Apache seems to be running very good, i copied my web site file structure to "C:\xampp\htdocs" directory and i can see the index and all links under localhost very well. Next i put my script in the "C:\xampp\cgi-bin" directory. Problems encountered: if i access the script as "localhost/cgi-bin/myscript.cgi" it works fine but if i access it through my html link from the html page it just displays the code from the myscript.cgi file. The same happens if i change extension to .pl

this is how i start the .cgi file:

#!"C:\xampp\perl\bin\perl.exe" print "Content-Type: text/html\n\n";

and this is the tag from the html doc:

form action="C:/xampp/cgi-bin/myscript.cgi" method="post"

So my question is what am i doing wrong? do i need to have something in my html header to recognize perl scripts?

Thank you, Yoshiro

Replies are listed 'Best First'.
Re: Perl and Xampp
by moritz (Cardinal) on May 07, 2012 at 09:18 UTC
    form action="C:/xampp/cgi-bin/myscript.cgi" method="post"

    The problem here is that you load the script straight from disc, so it never goes through your Apache, and in turn Apache has no chance to actually run it.

    Change the link to <c>action="/cgi-bin/myscript.cgi"

      Hello moritz

      Thank you, indeed makes perfect sense what you say.

      got it to work if i put the full path like:

      action="http://localhost/cgi-bin/myscript.cgi"

      Thank you again,

      Yoshiro

        if moritz' recommendation fails to work without adding the http://localhost/ you've just shown us (when invoking the cgi ) you may have a problem with your Apache install... but from your OP, if your remark that "i access it through my html link from the html page" means that you bring up the html page without using Apache (by, for example, typing (drive:/// or file:///)path/to/htmlfilename.htm in the browser address bar without specifying localhost, you're again trying to execute the cgi without any means (namely, Apache) to do so.
Re: Perl and Xampp
by Anonymous Monk on May 07, 2012 at 12:37 UTC
    This is one of those "universal mistakes" so don't feel bad about making it. A web-page like this is a computer program: what you enter is fed to it as input and what you get is its output. The web server must be configured to recognize that such-and-such URL corresponds to a program. If it doesn't, then "it serves the content of a file," no matter what that content is. (And this, BTW, can be a serious source of security holes.)

      Yes, these are my first steps into creating dynamic web pages. I'm happy i found this community because there are lots of things to digest and the Monastery sure is a place of knowledge.

      Thank you monks