JDT |
John Dixon |
Running a CGI Script on a Web Server |
||||
|
For many years I have been writing Perl scripts to process ASCII files of one sort or another. I typically do this when I need to reformat or tidy up a series of HTML pages. To run a Perl script that is installed on your computer, which needs to process one or more files that are also on your computer, and where the Perl interpreter is installed on your computer, is very simple - you just need to double-click the perl script and it does the business - assuming that everything is set up correctly of course, for example, the location of the perl.exe program is defined in your path. You can also open a DOS window and type perl perlfile.pl to run a script (where perlfile.pl is the name of the Perl script you want to run). However, when it comes to running a Perl script, or CGI script, on a web server, things can be a bit trickier - not too tricky, but a bit trickier. In this article I'll look at two versions of the same script: one that will run quite happily on a local machine (by double-clicking the script, for example), and one that will run on a web server. The script itself is very simple - it opens a file, changes some text inside the file, and then saves the file under a different name. Version 1 - the local versionHere is version 1 of the script. This is the version that will run locally on a computer, without a web server is sight. localScript.pl $name = "before.htm" or die "cannot assign to variable: $!"; This script opens a file called before.htm, uses a regular expression to change the string 'hello world' to 'goodbye cruel world', and writes the contents to a file called after.htm. If the file after.htm does not exist, the script creates it. The file before.htm simply contains one line - hello world. So it is not even a proper HTML file in fact, but that doesn't matter for this exercise as it is the script that is important, not the file that is being processed. Version 2 - the web server versionHere is the web server version of the script. It contains everything that is in version 1, plus a bit more. webScript.cgi #!/usr/bin/perl -w A couple of initial points to note: 1. Why does the script have a .cgi extension instead of a .pl extension? 2. If you call this script webScript.pl it will run without any problems on a local disk - just as version 1 did. That is to say, all the extra code will not prevent it from running locally. Running the scriptTo run the script you need to first upload the script and the file before.htm into the cgi-bin directory on your web server. On your web server the cgi-bin directory might be called something else, but it will probably be recognizable as the place where cgi scripts need to be located. By default, when you upload a file onto your web server it will probably have permissions of 644. You need to change these to 755 so that the script can be run by anyone. Your ISP should provide you with a way to do this. If not, contact me at johndixon@dixondevelopment.co.uk and I'll send you a script to change the permissions for you. Once you have uploaded the files and changed the permissions, all you need to do is browse to the script in your favorite browser. If the browser window is blank, then everything has probably worked OK. Check in your cgi-bin directory to see if the file after.htm has been created and that it contains the words 'goodbye cruel world'. Author: John Dixon Go back to Perl Tutorials home page Go back to Tutorials home page
|
|
|
|||||
|
© 2007-2009 - John Dixon Technology Ltd |
|||||