Install, Setup and Configure CGI and Perl in Windows XP

ยปยปยปInstall, Setup and Configure CGI and Perl in Windows XP
In this tutorial, we’ll learn about how to install, setup and configure CGI and Perl in the Apache HTTP web server running in Windows operating system, Windows XP specifically. In Windows, we make use of free ActivePerl community edition provided by ActiveState to provide Perl functionality.


Obviously, a web server needs to be running on the Windows machine. Refer to this post for instructions on how to install Apache2 in Windows.

Download ActivePerl


Download ActivePerl from Click on Free Download to start the download process. There is no need to input any contact info. Just leave it blank and press ‘Next’ to start the download.

Then download the latest version of Windows MSI package.

Install ActivePerl

Start the installation by double clicking the setup file. Follows the on-screen instruction. If you will be using Perl CGI programs and want to maintain some level of portability between both Linux machines and Windows machines, you may want to install Perl at the same location on your Windows machine as it is on most Linux machines.

For example, on Linux machine, Perl is located at /usr/bin/perl and so every Perl program that I write begins with #!/usr/bin/perl. So, it’s best when install Perl on an Windows machine, instead of installing it in the default location (i.e. C:\perl), install it in C:\usr instead, so that the Perl executable is located at /usr/bin/perl. This allows codes written on Windows machine been moved to, without changes, to Linux machine, and have it run there, and vice versa.

To change the installation path, click on browse button when you’re on the installation screen that prompts you to select which features you want to install. Set it to C:\usr if needed.

Make sure that the following options is checked (selected):
Add Perl to the PATH environment variable
Create Perl file extension association

Activating CGI

Open the httpd.conf file for editing by selecting Start > Programs > Apache HTTP Server > Configure Apache Server > Edit the Apache httpd.conf Configuration File. Alternatively, open the httpd.conf with any text editor.

In the main directory section, search for Options Indexes FollowSymLinks (at about line 267), and add ExecCGI to the end so it looks like:

Options Indexes FollowSymLinks ExecCGI

Search for the following line and remove the hash mark character (#) to uncomment this line. (You can also change .cgi to .pl, or add .pl behind .cgi if you prefer that perl extention is also treated as cgi files) For example:

#AddHandler cgi-script .cgi

Should look like:

AddHandler cgi-script .cgi .pl


AddHandler cgi-script .pl


AddHandler cgi-script .cgi

Save the httpd.conf configuration file, restart the Apache server. Test the configuration as described in Testing Your Web Server CGI Configuration at the end of this article.

Optional: Enabling CGI in Any Directory

If you want to use CGI outside ScriptAliased directory (ScriptAlias is usually the Apache2/cgi-bin/), comment out the following line:

ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache2/cgi-bin/"

Should look like:

#ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache2/cgi-bin/"

Alternatively, if you want to specify just one directory to put all your cgi programs, change the path instead, but makes ure that directory exists.

Should look like (for default settings):

ScriptAlias /cgi-bin/ "your_prefer_cgi-bin_direcotry"

Save the httpd.conf file. Restart the Apache server.

Replace backslashes of directory/folder path with forward slashes in Apache httpd.conf even though you’re on Windows machine.

Finding Perl Executable Location

If you don’t know where is perl.exe installed to, go to Start -> Search and search for perl.exe. This location is the path to the perl executable that has to be put on the top of all cgi scripts. If you follow default installation procedure, the path should be C:\perl\bin\perl.exe.

For the path to perl.exe path, all of these format are valid:

Testing Your Web Server CGI Configuration

Save the following test script in your DocumentRoot directory (if you have uncomment ScriptAlias, you can put it anywhere inside your DocumentRoot directory, or if you have set ScriptAlias to some particular directory, put the cgi in that directory only, i.e Apache2/cgi-bin) as or test.cgi (depending on your configuration of the AddHandler line) and modify the first line as required to point to your ActivePerl interpreter:

# ^^^ this must be the first line of the script! ^^^
# start code

use strict;
use CGI;
my $q = new CGI;

# print header and start the markup output

print $q->header( "text/html" ),$q->start_html( "hello from perl cgi!" );
print $q->h2("hello dave...");
print $q->end_html;
# end code

Now go to http://localhost/cgi-bin/test.cgi (scripts in Apache2\cgi-bin\ are read as http://localhost/cgi-bin/ by default). You should see a page that displays a level two heading with the following text:

hello dave

If you see the above message, CGI is running. If you get a 500 error, go to the last entry in your Apache2/logs/error.log (or the Review Error Log in the Start menu) to see exactly what caused this error.

By | 2016-12-09T08:43:40+00:00 December 9th, 2016|Categories: Web Servers|Tags: , , , , |11 Comments

About the Author:

LK is a technology writer for Tech Journey with background of system and network administrator. He has be documenting his experiences in digital and technology world for over 15 years.Connect with LK through Tech Journey on Facebook, Twitter or Google+.
  • Besart

    I have installed cgi and configured apache as you said, but i got this erro:

    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, webmaster@localhost 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.


    Apache/2.0.58 (Win32) PHP/5.1.4 Server at localhost Port 80

  • jack


  • Just for the record, the above test script throws a 500 error when used as is. Maybe it is just a problem with firefox displaying text or something, but the quotation marks are mixed up, so that could lead to problems ๐Ÿ™‚

  • Johanna

    Hi all,

    I really need some help on this subject =)

    I have followed the steps above, and changed the quotation marks, and what I get is 9 error messages:

    Backslash found where operator expected at Z. est.cgi line 1, near "rtf1"
    or …. , near "ansi"
    or …. , near "deff0"
    or …. , near "f1"

    I am a total rookie with these things, any help appreciated =)



  • Munir

    I did everything you said. But cgi is still not running. Please help.
    my apache is 2.2

  • gael

    Thanks a lot !

    BTW, the error 5OO is thrown by the server if the quotes are not replaced by standard one line 11…

    Otherwise everythings works fine.

  • Lincolemberg Canuto

    Salve galera,

    vim trazer a cura de tantas pessoas que quando vão instalar o PERL com APACHE se deparam com uma mensagem de erro do APACHE (500 Internal Server Error)…

    É simples, quando nós copiamos o conteúdo do arquivo test.cgi não notamos as "aspas" que contem cada linhas… basta apenas redigir todas as aspas do arquivo TEST.CGI (sem copiar).. vocês perceberam que o tipo de aspa irá mudar quando for redigida.. Fora isso não há secredo. Façam todos os passos deste belo artigo com este detalha..



  • XXC

    Yep, Error 500 here also, I looked at the error logs and indeed there is an error, well so how do we resolve the 500 error??

    You left us high and dry with this article…

  • I followed your steps but the browser does not give the page in HTML format, it displays a plain text file with HTML tags..Can U help?
    Thank you in advance.

  • anonymous

    Mitchell , and people from google ๐Ÿ™‚

    try this testscript instead.
    edited the double quotes (")
    and placed the start_html onto a new line.

    for more information,
    i use a windows 7 machine with xampp (
    installed xampp, then start localhost and go to
    http://localhost/ (testscript below)

    use strict;
    use CGI;
    my $q = new CGI;

    # print header and start the markup output
    print $q->header( "text/html" );
    print $q->start_html( "hello from perl cgi!" );
    print $q->h2("hello World");
    print $q->end_html;

  • AV

    I have already set up ActivePerl and Apache on my system, but can't get either of them to work, can someone PLEASE help me? Where am I supposed to install ActivePerl on my system in order for Perl to work, and for me to use Perl scripts in the Firefox browser?