Make sure you read the BUGS AND CAVEATS section below for the known limitations of this port.
The INSTALL file in the perl top-level has much information that is only relevant to people building Perl on Unix-like systems. In particular, you can safely ignore any information that talks about ``Configure''.
You should probably also read the README.os2 file, which gives a different set of rules to build a Perl that will work on Win32 platforms. That method will probably enable you to build a more Unix-compatible perl, but you will also need to download and use various other support software described in that file.
This set of instructions is meant to describe a so-called ``native'' port of Perl to Win32 platforms. The resulting Perl requires no additional software to run (other than what came with your operating system). Currently, this port is only capable of using Microsoft's Visual C++ compiler. The ultimate goal is to support the other major compilers that can be used on the platforms.
attrib -R *.* /S
from the perl toplevel directory. You don't have to do this if you used the right tools to extract the files in the standard distribution, but it doesn't hurt to do so.
set INCLUDE=E:\MSVC20\INCLUDE
This must have only one directory (a list of directories will not work). VCVARS32.BAT may put multiple locations in there, which is why this step is required.
cd win32 patch -p2 -N < VC-2.0\vc2.patch
You may have to edit win32\win32.c manually if you don't have GNU patch.
nmake install INST_TOP=D:\FOO\PERL
instead. To use the Perl you just installed, make sure you set your PATH environment variable to C:\PERL\BIN (or D:\FOO\PERL\BIN).
To get a more detailed breakdown of the tests that failed, say:
cd ..\t
.\perl harness
This should produce a summary very similar to the following:
Failed Test Status Wstat Total Fail Failed List of failed
------------------------------------------------------------------------------
io/fs.t 26 16 61.54% 1-5, 7-11, 16-18, 23-25
io/tell.t 13 1 7.69% 10
lib/anydbm.t 12 1 8.33% 2
lib/findbin.t 1 1 100.00% 1
lib/sdbm.t 12 1 8.33% 2
op/mkdir.t 7 2 28.57% 3, 7
op/runlevel.t 8 1 12.50% 4
op/stat.t 56 3 5.36% 3-4, 20
op/taint.t 98 20 20.41% 1-6, 14, 16, 19-21, 24, 26, 35-3
pragma/locale.t 98 40 40.82% 1, 13-14, 21-27, 33, 39, 45-53,
Failed 10/149 test scripts, 93.29% okay. 86/3506 subtests failed, 97.55% okay.
Check if any additional tests other than the ones shown here failed. The standard testsuite will ultimately be modified so that the testsuite avoids running irrelevant tests on Win32.
Many tests from the standard testsuite either fail or produce different results under this port. Most of the problems fall under one of these categories
stat and lstat functions may not behave as documented. They may return values that bear no
resemblance to those reported on Unix platforms, and some fields may be
completely bogus.
fork, exec,
dump, kill, chown, link, symlink, chroot,
setpgrp, getpgrp, setpriority, getpriority,
syscall, fcntl, flock. This list is possibly incomplete.
socket related calls are supported, but they may not behave as on Unix platforms.
select call is only supported on sockets.
system or the qx[] operator (a.k.a. ``backticks''), when used to call interactive commands, is
ill-defined.
$! doesn't work reliably yet.
utime, times and process-related functions may not behave as described in the
documentation, and some of the returned values or effects may be bogus.
perl -V.
Nick Ing-Simmons and Gurusamy Sarathy have made numerous and sundry hacks since then.
Last updated: 19 March 1997