Main Page

1. Availability and Installation

1.1. What is Perl, and where can I get a ton of information about it?

Perl is a scripting language widely used for system administration and programming on the World Wide Web. It originated in the UNIX community and has a strong UNIX slant, but is still very useful for Win32 platforms. perl (small 'p') is the program used to interpret the Perl language.

To get more information about Perl, check out these WWW URLs:

There are several good books about Perl; consult your local technical bookstore. Two in particular to consider are _Programming_Perl_, 2nd Edition, by Larry Wall, Tom Christiansen and Randal L. Schwartz (O'Reilly & Associates, 1996) and _Learning_Perl_, by Randal L. Schwartz (O'Reilly & Associates, 1993). These are referred to by Perl enthusiasts as "the Camel book" and "the Llama book", respectively. The nicknames come from the pictures on the front covers.

If you are new to Perl, and there are any terms mentioned in this FAQ that you don't get, try one of the above resources.

1.2. What Perl interpreters are available for the Win32 platform?

The main Perl interpreter available for the Win32 platform is Perl for Win32. It was developed by ActiveWare, Inc. (originally Hip Communications) for Microsoft Corporation for inclusion in the Windows NT Resource Kit. It has since taken on a life of its own. When people talk about "Perl for Win32", it is this package that they mean.

The Perl for Win32 package includes perl, PerlIS, and several Win32-specific modules developed by ActiveWare.

A beta version of Perl for Win32, which is at the perl 5.003 level, is also available. See question 1.13.

Another implementation is the perl port in the MKS Toolkit from Mortice Kerns Systems, Inc. ( This is a package that includes numerous other UNIX-originated tools.

Another version is available compiled for OpenNT for Microsoft Windows NT ( OpenNT is a replacement for the POSIX subsystem of Windows NT, and is produced by Softway Systems, Inc. You'll have to have OpenNT to run this version.

[Any other implementations that should be mentioned here? - ESP]

1.3. Can I build perl myself from the standard distribution source code?

The standard perl distribution is mainly geared for UNIX systems. The configuration scripts are in UNIX shell language. It is therefore not a simple task to build perl from the standard distribution.

However, it has been done. Karl Martin Syring has built perl with the GNU-Win32 development system. His port is available at:

To build this, you'll need GNU-Win32, which is available from Cygnus Support (

Gary Ng has ported perl to be compiled with Microsoft Visual C++. His port is available at this address:

To build it, unzip the distribution file into a win32 subdirectory of your perl directory (from the standard distribution -- like the os2 subdirectory).

1.4. Where is the Perl for Win32 interpreter available?

The Perl for Win32 package is available as a ZIP archive by anonymous FTP from ActiveWare and from CPAN, the Comprehensive Perl Archive Network.

To download from ActiveWare, look in this directory:

There are 4 distribution packages: one for Intel x86 machines, one for DEC Alpha machines, one for PowerPC machines, and one source code package. These packages are named,,, and, respectively, where XXX is the current build number. The current build number is 110.

To download files from CPAN, go to the following URL:

Note that this will automatically redirect you to your nearest CPAN mirror site.

1.5. How do I unzip the Perl for Win32 package?

Because the Perl for Win32 package contains long file names (LFNs), normal zip file handlers like PKZip will not open them correctly. [Does the newest version of PKZip handle LFNs correctly? -ESP] You need to get a zip file opener that can work with LFNs, such as:

To extract the archive, make a new directory on your hard drive that will become your new perl directory ("C:\Program Files\perl5" and "C:\perl5" are good candidates). Extract the archive to that directory, making sure that directory names are expanded from the archive (this is crucial!). See the documentation for your unzipper for details.

1.6. How do I build Perl for Win32 from the source code package?

The source code package includes make files for Visual C++ versions 2.x and 4.x. The following instructions are for Visual C++ 4.x. [Does anyone have instructions for VC++ 2.x? How about other Win32 C++ compilers? -ESP]

The source distribution only includes Intel targets. If you're building for another platform, like DEC Alpha, you may have to fiddle with the build settings to get them to work. [Anyone done this? -ESP]

First, make sure you unzipped the archive correctly into the destination directory. Then, open the perl100.mdp project file in the dll-src subdirectory of your perl directory with Microsoft Developers Studio.

Build the "perl100 - Win32 Perl Intel DLL Release" target (Go have some lunch -- this will take a while). You'll end up with a perl100.dll file in your ntt subdirectory of your perl directory.

Now, open the perl.mdp project file in the exe-src subdirectory of your perl directory. Build the "perl - Win32 Perl Intel Release" target. You also have to build the "perl - Win32 PerlGlob Intel Release" target. These will produce perl.exe and perlglob.exe, respectively, in your ntt directory.

Optionally, you can build the extension files that come with the source distribution. These include:

Note that the extensions look for perl100.lib in the dll-src\Release directory, which by default doesn't exist. You can either create the directory and copy the lib file there, or go through the build settings for the extensions and set them to point to the proper directory, dll-src\LibRel.

Building the extensions will put the extension binaries (.pll files) in the proper place in the Lib subdirectory.

1.7. OK, I've got it downloaded, unzipped, and optionally built. Now what?

The last step is running install.bat, a perl program masquerading as a batch file found in your perl directory. Running install.bat will register the perl program and PerlIS with your system, as well as copy the binary files from the ntt subdirectory to the bin subdirectory.

If you installed in a directory with long file names (like "C:\Program Files\perl5"), you may want to change directory to the DOS version of your directory (like "cd C:\PROGRA~1\perl5") before running install.bat. This ensures that you get only readable paths in your registry, and could avoid some annoying errors.

1.8. What does installing do to my registry?

Installing Perl for Win32 adds the following keys to your registry, if they don't already exist:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Resource Kit\PERL5: main registry key
  • BIN: path to the perl binaries
  • PRIVLIB: path to the library files
  • HTML-DOCS: path to the HTML documentation

The BIN and PRIVLIB values are probably used in the perl interpreter to find files for loading. The purpose of the HTML-DOCS value is unclear.

Installing also adds your perl binary path to the PATH variable for your system, as well as "." (current directory), for historical reasons.

Also, if you have Microsoft Internet Information Server (IIS) installed, install.bat will associate an extension of your choosing (.pl is the default) with PerlIS in the IIS script mapping registry key, HKEY_LOCAL_MACHINE\System\Services\W3SVC\Parameters\Script Map. See IIS documentation for more info on the script map.

1.9. How do I uninstall Perl for Win32?

You are not able to uninstall Perl for Win32 from the Add/Remove Programs section of the Control Panel (if you have such a section).

In your original perl directory, there is a file called uninstall.bat. Use this to clear out the registry settings created by install.bat.

uninstall.bat does not delete your Perl for Win32 files for you. You can do this manually with Explorer, File Manager, or "del [perl directory]\*.* /S /Q", where [perl directory] is your perl directory.

1.10. What is ActiveScripting?

Active Scripting is a new technology put out by Microsoft Corporation to allow code embedded in HTML pages to run on WWW clients or servers. It is designed to be language neutral, so that you can write Active Scripts in Visual Basic, JavaScript, Python, or, theoretically, Perl.

1.11. Is there an ActiveScripting version of Perl available?

Yes. On December 4, 1996, ActiveWare released a beta version of PerlScript, an ActiveScripting engine for the Perl language.

or on CPAN at

You'll also need to download either the Perl for Win32 5.003 binary or source format package in the same directory (see question 1.13).

There's no documentation to speak of, but there are several examples. ActiveScripting works a lot like OLE Automation, so if you review that documentation, plus the ActiveScripting documentation, you should be able to get along.

1.12. What other scripting languages are available for Win32 platforms?

Although it's possible to program in batch language or with QBASIC (a 16-bit BASIC interpreter that comes with Windows 95 and Windows NT), serious programmers will probably prefer one of the following other options:

Awk and UNIX shell languages are available from in several UNIX-to-NT packages (see question 4.7).

[Any others? -ESP]

1.13. Where's Perl for Win32 5.003?

On December 4, 1996, ActiveWare released a beta version of Perl for Win32 at the 5.003 level. It corrects many of the flaws of the 110 build at the 5.001m level. It's available at

or on CPAN at

There are four beta packages:

Neither PerlIS (see question 2.2) or any of the RISC processor distributions can be found here.

Many of the answers in this FAQ do not apply to the beta version.

1.14. When I double-click on the "perl.exe" icon in Explorer, I get an empty DOS window with a blinking cursor. What gives?

Perl for Win32 is a Win32 command-line program. It expects to be run from the command line, not from Explorer.

If you want to run a Perl script, write the script out using a text editor like Notepad. A good starter program is:

    print "Hello, World!\n";

Save the program to a file on your hard disk (such as "C:\temp\"). Now, start a command prompt window (sometimes erroneously called a "DOS window"), and type the following line at the command prompt:

    C:\> perl c:\temp\

This should print out the words "Hello, World!" on the screen. You may have to do some fiddling with the PATH environment variable, or specify the full path name to perl.exe, in order for this to work.

perl.exe has a lot of nifty command-line arguments that can make your work a lot easier. See the perlrun documentation page for details.

To answer the original question about what's happening when you start perl from an Explorer window rather than a command-line window: starting from Explorer is roughly the same as starting perl without any command line arguments. When perl is started without a script file specified on the command line, it expects to receive a Perl program as standard input, i.e., from the keyboard.

The blinking cursor means perl is waiting for your input. You can actually type in a Perl program from the keyboard, and then let perl know to execute it by typing the Ctrl-Z key, which is the end-of-file marker on Windows systems.

1.15. When I install Perl for Win32, it says I don't have Internet Information Server, and asks if it should still install PerlIS.dll.

    When I say yes, it says there was an error.  Why?

PerlIS.dll is a special interpreter for Perl (see question 2.2). Because setting PerlIS up for Microsoft Internet Information Server (IIS) is such a pain in the keister, install.bat will do it for you automagically.

However, if you don't use IIS on the machine you're installing Perl for Win32 on, you should answer "no" when you're asked. A lot of people confuse "PerlIS.dll" that the message asks about with Perl for Win32 in general. Thus the problem.

If you get this error, ignore it. Perl programs should run just fine. If you're the kind of chucklehead who won't sleep knowing that there was an error during the installation, just run uninstall.bat, then run install.bat again, and answer "no" instead of "yes". Feel better?

If you want to use PerlIS.dll with another ISAPI-enabled Web browser, you'll have to set that up by hand. install.bat won't do it for you.

Last-modified: Fri, 26 Jul 2002 06:13:25 GMT