ActivePerl Documentation
Table of Contents

(Usage Statistics)
(about this ver)

* Getting Started
    * Welcome To ActivePerl
    * Release Notes
    * Readme
    * ActivePerl Change Log
* Install Notes
    * Linux
    * Solaris
    * Windows
* ActivePerl Components
    * Overview
    * PPM
    * Windows Specifics
       * OLE Browser
       * PerlScript
       * Perl for ISAPI
       * PerlEZ
* ActivePerl FAQ
    * Introduction
    * Availability & Install
    * Using PPM
    * Docs & Support
    * Windows Specifics
       * Perl for ISAPI
       * Windows 9X/NT/2000
       * Quirks
       * Web Server Config
       * Web programming
       * Programming
       * Modules & Samples
       * Embedding & Extending
       * Using OLE with Perl
* Windows Scripting
    * Active Server Pages
    * Windows Script Host
    * Windows Script Components

Core Perl Documentation

* perl
* perlfaq
* perltoc
* perlbook

* perlsyn
* perldata
* perlop
* perlreftut
* perldsc
* perllol

* perllexwarn
* perldebug

* perlrun
* perlfunc
* perlopentut
* perlvar
* perlsub
* perlmod
* perlpod

* perlstyle
* perlmodlib
* perlmodinstall
* perltrap
* perlport
* perlsec

* perlref
* perlre
* perlform
* perllocale
* perlunicode

* perlboot
* perltoot
* perltootc
* perlobj
* perlbot
* perltie

* perlipc
* perlnumber
* perlfork
* perlthrtut

* perldiag
* perlfaq1
* perlfaq2
* perlfaq3
* perlfaq4
* perlfaq5
* perlfaq6
* perlfaq7
* perlfaq8
* perlfaq9

* perlcompile

* perlembed
* perlxstut
* perlxs
* perlguts
* perlcall
* perlfilter
* perldbmfilter
* perlapi
* perlintern
* perlapio
* perltodo
* perlhack

* perlhist
* perldelta
* perl5005delta
* perl5004delta

* perlamiga
* perlcygwin
* perldos
* perlhpux
* perlmachten
* perlos2
* perlos390
* perlvms
* perlwin32


* attributes
* attrs
* autouse
* base
* blib
* bytes
* charnames
* constant
* diagnostics
* fields
* filetest
* integer
* less
* lib
* locale
* lwpcook
* open
* ops
* overload
* perllocal
* re
* sigtrap
* strict
* subs
* utf8
* vars
* warnings


* ActivePerl
    * DocTools
        * TOC
            * RDF
* AnyDBM_File
* Archive
    * Tar
* AutoLoader
* AutoSplit
* B
    * Asmdata
    * Assembler
    * Bblock
    * Bytecode
    * C
    * CC
    * Debug
    * Deparse
    * Disassembler
    * Lint
    * Showlex
    * Stackobj
    * Terse
    * Xref
* Benchmark
* Bundle
    * LWP
* ByteLoader
* Carp
    * Heavy
    * Apache
    * Carp
    * Cookie
    * Fast
    * Pretty
    * Push
    * Switch
* Class
    * Struct
* Compress
    * Zlib
* Config
    * FirstTime
    * Nox
* Cwd
* Data
    * Dumper
* DB
* Devel
    * DProf
    * Peek
    * SelfStubber
* Digest
    * HMAC
    * HMAC_MD5
    * HMAC_SHA1
    * MD2
    * MD5
    * SHA1
* DirHandle
* Dumpvalue
* DynaLoader
* English
* Env
* Errno
* Exporter
    * Heavy
* ExtUtils
    * Command
    * Embed
    * Install
    * Installed
    * Liblist
    * MakeMaker
    * Manifest
    * Miniperl
    * Mkbootstrap
    * Mksymlists
    * MM_Cygwin
    * MM_OS2
    * MM_Unix
    * MM_VMS
    * MM_Win32
    * Packlist
    * testlib
* Fatal
* Fcntl
* File
    * Basename
    * CheckTree
    * Compare
    * Copy
    * CounterFile
    * DosGlob
    * Find
    * Glob
    * Listing
    * Path
    * Spec
        * Functions
        * Mac
        * OS2
        * Unix
        * VMS
        * Win32
    * stat
* FileCache
* FileHandle
* FindBin
* Font
    * AFM
* Getopt
    * Long
    * Std
    * AsSubs
    * Element
    * Entities
    * Filter
    * Form
    * FormatPS
    * Formatter
    * FormatText
    * HeadParser
    * LinkExtor
    * Parse
    * Parser
    * TokeParser
    * TreeBuilder
    * Cookies
    * Daemon
    * Date
    * Headers
        * Util
    * Message
    * Negotiate
    * Request
        * Common
    * Response
    * Status
* I18N
    * Collate
* IO
    * Dir
    * File
    * Handle
    * Pipe
    * Poll
    * Seekable
    * Select
    * Socket
        * INET
        * UNIX
    * Msg
    * Open2
    * Open3
    * Semaphore
    * SysV
    * Debug
    * MediaTypes
    * MemberMixin
    * Protocol
    * RobotUA
    * Simple
    * UserAgent
* Math
    * BigFloat
    * BigInt
    * Complex
    * Trig
* MD5
    * Base64
    * QuotedPrint
* NDBM_File
* Net
    * Cmd
    * Config
    * Domain
    * DummyInetd
    * FTP
    * hostent
    * libnetFAQ
    * netent
    * Netrc
    * NNTP
    * PH
    * Ping
    * POP3
    * protoent
    * servent
    * SMTP
    * SNPP
    * Time
* O
* ODBM_File
* Opcode
* Pod
    * Checker
    * Find
    * Html
    * InputObjects
    * Man
    * Parser
    * ParseUtils
    * Plainer
    * Select
    * Text
        * Color
        * Termcap
    * Usage
    * SOAPClient
    * SOAPServer
* Safe
* SDBM_File
* Search
    * Dict
* SelectSaver
* SelfLoader
* Shell
    * Defs
    * Envelope
    * EnvelopeMaker
    * GenericHashSerializer
    * GenericInputStream
    * GenericScalarSerializer
    * Lite
    * OutputStream
    * Packager
    * Parser
    * Transport
        * HTTP
            * Apache
            * CGI
            * Client
            * Server
        * LOCAL
        * MAILTO
        * POP3
        * TCP
    * TypeMapper
* Socket
* Symbol
* Sys
    * Hostname
    * Syslog
* Term
    * ANSIColor
    * Cap
    * Complete
    * ReadLine
* Test
    * Harness
* Text
    * Abbrev
    * ParseWords
    * Soundex
    * Tabs
    * Wrap
* Thread
    * Queue
    * Semaphore
    * Signal
    * Specific
* Tie
    * Array
    * Handle
    * Hash
    * RefHash
    * Scalar
    * SubstrHash
* Time
    * gmtime
    * Local
    * localtime
    * tm
    * Lite
    * data
    * Escape
    * file
    * Heuristic
    * ldap
    * URL
    * WithBase
* User
    * grent
    * pwent
* Win32
    * AuthenticateUser
    * ChangeNotify
    * Clipboard
    * Console
    * Event
    * EventLog
    * File
    * FileSecurity
    * Internet
    * IPC
    * Mutex
    * NetAdmin
    * NetResource
    * ODBC
    * OLE
        * Const
        * Enum
        * NEWS
        * NLS
        * TPJ
        * Variant
    * PerfLib
    * Pipe
    * Process
    * Registry
    * Semaphore
    * Service
    * Sound
    * TieRegistry
* Win32API
    * File
    * Net
    * Registry
    * RobotRules
        * AnyDBM_File
    * Element
    * Parser
        * Expat
    * PPD
    * PPMConfig
    * ValidatingElement
* XSLoader

 ActivePerl FAQ




Release Notes

Build 607 Tuesday, February 8, 2000

For the latest information on ActivePerl, please see:


Release History

Build 607 Friday, February 11, 2000

Bug Fixes and Changes

  • This build corresponds to the public Perl 5.6 beta1 release, otherwise known as v5.5.650.
  • Several bugs in the Unicode support have been fixed.
  • Support for Unicode has changed from previous development versions. See perlunicode.pod for details.
  • There is a new -C command-line switch to request that system calls use the wide-character APIs. This can also be used in the shebang line.
  • The byte pragma can be used to force byte-semantics on Perl operations. When not used, character semantics apply if the data is Unicode; otherwise, byte semantics are used.

Known Issues

  • Conversions between Unicode and locale encoding don't work yet.
  • @ARGV does not contain Unicode strings, even when the -C switch is used. This will be supported in a future release.
  • The known issues in Build 606 still apply.

Build 606 Friday, February 4, 2000

Bug Fixes and Changes

  • PPM can communicate with the package repository via SOAP. Currently PPM's and SOAP's integration is somewhat limited; however, it serves as proof of concept.
  • New modules included with the distribution are:
    • SOAP
    • File::CounterFile
    • Font::AFM
  • Support for Unicode has changed from previous versions. See perlunicode.pod for details.

Known Issues

  • I/O support for Unicode is not yet fully functional.
  • When VPM is started, it also starts the PerlSock service, but the latter is not shut down when VPM exits. The service will be shutdown when the system is rebooted and will no be started automatically when the system comes up again.
  • PerlScript and Perl for ISAPI are lacking globalization support, but they are otherwise fully functional.
  • Backticked `dir` and C file.lst' );> calls are not performed in Unicode mode.
  • Adding an entry containing utf8 characters into %ENV{} modifies the output of `set`. As above, the same conversion issue exists, resulting in a mismatch between the contents of `set` and %ENV{}.

Build 604 Friday, November 26, 1999

Bug Fixes and Changes

  • A few bugs in the fork() emulation have been fixed. perlfork.pod reflects these changes.

Build 603 Tuesday, November 23, 1999

Bug Fixes and Changes

  • NOTE:Build 603 is not binary compatible with earlier builds. If you have compiled your own extensions with earlier builds, you will need to recompile all of them.
  • Build 603 corresponds to Perl 5.005_62. Additional patches available since 5.005_62 in the public Perl repository have been incorporated.
  • Preliminary support for fork() is included. See the perlfork.pod document for details about this functionality.
  • Documentation in fully searchable HTMLHelp format is included.
  • Many of the included extensions from CPAN have been updated to newer versions.
  • A large number of minor bugs in the Perl core have been fixed. See the Changes file in the included sources for a detailed list.

Build 602 Thursday, August 5, 1999

Bug Fixes and Changes

  • Build 602 corresponds to Perl 5.005_60. Additional patches available since 5.005_60 in the public Perl repository have been incorporated.
  • A number of pre-built extensions from CPAN are included in this release. These may be installed using PPM or VPM (both of which are included).

Build 601 Tuesday, July 13, 1999

Bug Fixes and Changes

  • Build 601 corresponds to Perl 5.005_57. Additional patches available since 5.005_57 in the public Perl repository have been incorporated.
  • This build features a major reworking of the API exposed by the PERL_OBJECT build option. The result is a well-defined Perl API (restricted to C syntax) that provides very high degree of compatibility for extensions available from CPAN.
  • Perl for ISAPI, PerlScript, PerlEz and PerlMsg have been modified to use the new PERL_OBJECT API.
  • Visual Package Manager (VPM) is now available. VPM can be used to install pre-built binaries from a package repository. One such is available at

What's new in the 600 Series

Major Changes

  • This series is built around development versions of Perl 5.006. Build 600 corresponds to Perl 5.005_57.
  • Significant changes that have occurred in the 5.006 development track are documented in perldelta.
  • Build 600 includes additional changes for supporting globalization. All Win32 API calls made by Perl now follow the utf8 mode of the interpreter. Wide versions of the API calls are made when utf8 is in effect. See utf8 for more information on enabling support for Unicode.
  • use caller provides a way for modules to inherit the utf8 mode of the calling context. See caller for more information.
  • The 600 series is not binary compatible with builds in the 500 series. Any extensions built using binaries from the ActivePerl 500 series will need to be recompiled. Note especially that this applies to PPDs that may have been built for 500 series builds.

Build 523 Thursday, November 4, 1999


  • This build is for the the ActivePerl CDROM.

Build 522 Monday, November 1, 1999

Bug Fixes and Changes

  • eval "STRING" in a scalar context could return corrupt values on the stack. This has been fixed. (perl#4401)
  • Syntax errors within a my declaration could result in subsequent spurious error messages. This should now behave properly. (perl#3097)
  • use locale; did not work correctly in perl and other hosts due to a missing locale initialization. Thanks to Jan Dubois for supplying the fix.
  • The results of utime() on directories did not account for daylight saving time. This has been fixed, again thanks to Jan Dubois. (perl#4420)
  • utime() did not work on directories in PerlScript and the other hosts. This has now been enabled.
  • unlink() could leave readonly files readable if it was unable to actually delete the files. This has been corrected.
  • Using global variables in PerlScript could mask subroutines or methods of the same name from being resolved correctly. This bug has been fixed.
  • A large number of repeated calls to PerlScript through Microsoft's ScriptControl could sometimes crash the application due to a bug in PerlScript's internal handling of IDispatch IDs. The problem has been fixed.
  • Win32::DomainName() now works correctly on Windows NT when the user has a local account of the same name as on the domain. Windows 9x users are out of luck, because this is a problem with the underlying API that cannot be easily worked around there. Thanks to Jan Dubois for this fix. (perl#4504)
  • Some potential stack extension bugs in the Win32:: builtins have been corrected. (perl#2990,3036)
  • PPM commands can now be abbreviated if they are unambiguous. The formatting of query results has been improved. Queries will also provide additional information by default. More concise output may be requested by disabling the new verbose option. The info and summary commands have been removed; their functionality has been folded into the query and search commands. Multiple queries should be faster, as the information retrieved from the repository is now cached by PPM. The new version number is 1.1.1.
  • Jenda Krynicky supplied a patch to add a DESTROY() method to Win32::Registry. This should fix bugs in scripts caused by failure to close open registry entries.

Build 521 Friday, October 15, 1999

Bug Fixes and Changes

  • Perl did not call the Windows Sockets cleanup API when it terminated. This could use up system resources in some cases.
  • PerlEz now enables more thorough global destruction phase cleanup of values allocated by the Perl interpreter.
  • Use of %SIG (such as in Net::FTP) could lead to failures due to race conditions when multiple interpreters ran concurrently. This problem has been corrected.
  • Win32::GetCwd() could sometimes return directories with a trailing backslash when called under Perl for ISAPI or PerlScript. The backslash is now omitted for consistency.
  • Under Perl for ISAPI or PerlScript, setting %ENV entries to undef could result in them reporting an empty string value instead of undef. This has been fixed.
  • Under Perl for ISAPI or PerlScript, rename() could sometimes move files rather than simply renaming them in situ. This has been corrected.
  • CGI::Carp now recognizes that it is running under PerlEx when outputting error messages.
  • A improved version of perldoc from Perl 5.005_57 has been included. This version supports using a pager when displaying results from the -f switch, and cleans up temporary files properly.
  • XML-Parser has been upgraded to v2.27 from CPAN.
  • Pod documentation for Win32::Pipe has been added, thanks to David S Rosinger.
  • InstallShield 3 string size limitation has been worked around when setting the PATH environment variable on WinNT by using Perl instead.

Build 520 Tuesday, September 28, 1999

Bug Fixes and Changes

  • Most Win32:: modules have been updated; they correspond to the new libwin32 v0.151 release. The following summary of changes is from the libwin32 changelog:
    • Win32API-File-0.07 has been added (thanks to Tye McQueen). This module provides low-level access to file and directory functions.
    • Win32-OLE has been upgraded to v0.1101 (thanks to Jan Dubois). Be sure to check out the cool new component browser (needs IE5). Type "perldoc Win32::OLE::NEWS" and/or see OLE/Changes for detailed notes.
    • Win32API-Net has been upgraded to v0.08 (thanks to Bret Giddings). NOTE: There is a POTENTIAL INCOMPATIBILITY in how empty string values are handled in input hashes. See APINet/Changes and the pod documentation for detailed notes.
    • Win32API-Registry has been upgraded to v0.17 (from Tye McQueen). See APIRegistry/Changes for detailed notes.
    • Win32-TieRegistry has been upgraded to v0.23 (from Tye McQueen). See TieRegistry/Changes for detailed notes.
    • Win32-Sound has been upgraded to v0.45 (from Aldo Calpini). The new version supports wave devices and volume controls, and also sports pod documentation.
    • A few bugs in Win32-EventLog have been fixed (thanks to Bret Giddings and Jan Dubois). There is also newer documentation in pod format. NOTE: There is a POTENTIAL INCOMPATIBILITY in the Report() method, which will now use the "Source" and "Computer" fields in the passed hashref if they exist. See EventLog/Changes and the pod documentation for details.
    • A typo in Win32::Console::GenerateCtrlEvent() has been fixed. Documentation in pod format has been added (from Jan Dubois).
    • Win32::NetResource::GetSharedResources() now continues the enumeration when there are "Access denied" errors; on other errors, it enumerates all the resources seen until the point the error occurred.
    • Minor changes in Win32-ODBC from various people have been included. See ODBC/Changes for a summary.
    • Other small changes for Perl 5.005xx compatibility and minor bug fixes round out this release.
    See the individual modules included in the libwin32 source distribution for detailed changes.
  • Besides libwin32 v0.151, the following bundled extensions have also been updated to newer versions: URI v1.04, libwww-perl v5.45, HTML-Parser v2.23, XML-Parser v2.26.
  • Child GUI processes launched by system()/qx() were accidentally started with their windows hidden. This has been corrected. (perl#4057)
  • Error messages reported via $^E were truncated. This bug has been fixed. (perl#3699)
  • Perl could leak memory when @_ is modified in subroutines. This has been fixed. (perl#4102,4103)
  • Autoquoting of -foo was broken when the integer pragma was in effect. This has been corrected. (perl#3588)
  • $Config{installarchlib}/CORE is now included as one of the default linker search paths for extension builds. This allows the linker to find PerlCRT.lib and other Perl libraries properly. (perl#4230)
  • Improved versions of Pod::Html, File::Spec and File::Compare from the latest Perl development version have been included. These help generate better HTML documentation with fewer bogus links and other formatting errors. (perl#2751,2821,2916,2930,2931,3033,3042,3061,3685,3785,3804)
  • Perl for ISAPI could sometimes go into an infinite loop when the connection is closed prematurely. This has been fixed.
  • PerlScript would fail to report error messages correctly in some cases. This has been fixed.
  • IIS method exclusions set up by the installer assumed IIS version 3 style of exclusions. IIS version 4 has a different (and incompatible) method inclusion setting. The installer now checks the installed version of IIS and sets up "PUT,DELETE" exclusions or "GET,POST" inclusions, as appropriate.

Build 519 Thursday, August 12, 1999

Bug Fixes and Changes

  • Fix for new Win32::* functions which among other things will fix File::Copy in PerlScript and Perl for ISAPI.
  • zlib now uses PerlIO_open() instead of fopen(); this enable proper translation of pathnames in PerlScript and Perl for ISAPI.
  • PerlScript is now handling recursive event calls correctly.
  • Fixed buffer overrun caused by off by one error in PerlScript and Perl for ISAPI.
  • stat() related functionality in Perl for ISAPI and PerlScript were still affected by the bug in the translation of relative paths. The fix for this that was in Build 518 was only partially effective. This has been rectified.
  • MakeMaker could sometimes make wrong guesses about the layout of the Perl library. This has been improved. (perl#3682,3811)
  • Optimizations sometimes bypassed strictures on barewords. This has been fixed. (perl#3897)
  • Build 518 shipped with Win32-TieRegistry v0.22, which was severely broken. That module has now been updated to v0.23.

Build 518 Thursday, June 24, 1999

Bug Fixes and Changes

  • Perl for ISAPI and PerlScript were sometimes affected by a bug in the translation of relative paths. This has been rectified.
  • Failure of the constructs truncate(FOO) and Foo->Bar(qw/.../) under use strict has been corrected. (perl#3533,3514)
  • A bug in the handling of bareword prototypes for subroutines prevented package name arguments containing :: from being passed correctly. This has been fixed. (perl#3493)
  • A race condition that affected extension bootstrapping in multiple interpreters running on concurrent threads has been fixed.
  • Some formatting problems and factual errors in the Win32 FAQs have been corrected.
  • Perl used to generate an exception when the installation root happened to be the drive root. This should now work as expected.
  • The installer now appends log messages to c:\APInstall.log to record any problems that may have showed up during the installation.

Build 517 Wednesday, May 26, 1999

Bug Fixes and Changes

  • PerlScript and Perl for ISAPI now do extra checks for the length of path names passed to open() to avoid bugs in IIS.
  • Backticks, glob() and pipe opens now work even when the standard handles are redirected in the parent process that Perl was launched from. This used to result in lost output from child-processes launched by CGI programs that were mapped to run using perl.exe under IIS. (perl#3487)
  • A bug in spawning processes caused arguments with high-bit characters to not be passed correctly to child programs. This is now fixed. (perl#3445)
  • A prototype bug that affected PerlApp and such things as use fatal 'open' has been fixed. (perl#3446-3451)
  • The installer raised an exception on some versions of Windows 95. This has been fixed.
  • Invalid URLs in the table of contents for the online documentation have been corrected.

Build 516 Friday, May 14, 1999

Perl Resource Kit Compatibility

ActivePerl can now be installed over the Perl Resource Kit (PRK) from O'Reilly and Associates.

There is an important caveat: the PRK Service Pack 1 should not be applied after you have installed ActivePerl Build 516 over a PRK installation.

We recommend that you follow this checklist:

  • If you have just the PRK without PRK Service Pack 1: Install ActivePerl Build 516, followed by the Perl Development Kit (PDK), in that order. PRK Service Pack 1 should not be applied after this. Alternatively, you may install PRK Service Pack 1, and follow the instructions for the next item.
  • If you have the PRK with PRK Service Pack 1 applied: Install ActivePerl Build 516, followed by the PDK, or vice versa. The order does not matter.
  • If you have the PRK, PRK Service Pack 1, and the PDK: Simply install ActivePerl Build 516.

Note that the Perl Development Kit is a free upgrade for PRK customers. See here for more information.

Bug Fixes and Changes

NOTE: Fixes annotated with change numbers are from the Perl source repository. These are generally posted for discussion in the Perl development mailing lists (usually <> and <>).


  • The stat() and opendir() builtins now behave reliably when given a bare drive name (without a trailing slash) and with pathnames that end in a backslash. (perl#3300)
  • The uname() builtin is now supported on win32. (perl#3134,3135)
  • Win32::GetTickCount() used to return negative values for long running processes. This has been fixed. However, note that the return value is still subject to wraparound, just as it is in the corresponding Win32 API function. (perl#3316)
  • When launched from a 16-bit process, the perl executable could not find its libraries correctly in certain configurations that used architecture-specific directories. The same problem existed when the PATH was set with a shortname-mangled architecture directory. These problems have been fixed. (perl#3345,3350,3353)
  • Win32::GetFullPathName(), Win32::SetLastError(), Win32::GetLongPathName(), and Win32::CopyFile() are now provided. See Win32.pod for documentation on these. (perl#2937,3353,3362)
  • Perl could access freed memory in some rare situations involving values subject to "autovivification". This has been fixed. (perl#3270)
  • opendir(D, "X:") now faithfully follows the same rules as the FindFirstFile() Win32 API. This means that the current directory on drive X: is opened, rather than the root directory on drive X:. (perl#3396)
  • Fixed a small memory leak when embedding Perl in applications that repeatedly create and destroy new interpreters. (perl#3419)
  • When there is a version component in the path to the site library, @INC construction failed to allow for directories that are not "subversion"-specific. This meant that perl failed to look for $top/site/5.005/lib if $top/site/5.00503/lib wasn't found. This is now fixed. (perl#3423)
  • The default compiler flags (i.e. the keys ccflags and optimize in used for building extensions have been set to -Od rather than -O2. This works around a bug in the Visual C compiler known to exist in versions prior to 6.0. ActivePerl itself is still built with -O2.


  • PerlScript could trash memory when running large bodies of code that would reallocate the perl stack.
  • PerlScript now calls any END blocks that may have been declared.

Perl for ISAPI

  • Perl for ISAPI now correctly returns error 404 if the requested file does not exist.

Other Extensions

  • Updated Win32::OLE to version 1.008. See the source distribution on CPAN for detailed change logs.
  • Updated XML::Parser to version 2.23. See the source distribution on CPAN for detailed change logs.
  • Fixed the return value from Win32::NetResource::NetShareGetInfo() if share is not found.


  • Fixed problems with OPTIONS attributes in PPM.
  • ppm.xml, the running record of installed modules, was not being updated in some cases, and in others, old history was being overwritten. History is now correctly propagated into the future.
  • PPM now outputs more informative summaries of packages, accessible via the summary and info commands.


  • Fixed problems uninstalling ActivePerl on Windows 95/98.
  • The installer now correctly verifies that the user has administrative privileges before proceeding further.
  • Changes to most configurable parameters (such as $Config{make}) in are now correctly propagated by the installer. A backup of the old is also now made. The PPM history file, ppm.xml, is similarly handled.


  • Added documentation on the builtin XSUBs in the Win32:: namespace. See Win32.pod. (perl#3363)
  • Links to style sheets have been fixed to be relative, to facilitate relocation.
  • Case distinctions in URLs are now maintained correctly, making it feasible to serve the supplied documentation from systems that are case-sensitive.
  • Several broken links in the supporting documentation have been fixed. We are still aware of broken links in the main perl documentation; these are expected to be resolved when we move to a better pod2html than the one currently supplied with Perl.

Build 515 Friday, April 9, 1999

Bug Fixes and Changes

  • Fixed a bug that caused system() to fail when called with a single argument.
  • Fixed incorrect use of tables in the HTML documentation that caused it to not wrap correctly.

Build 514 Wednesday, April 7, 1999

Bug Fixes and Changes

  • Built around Perl 5.005_03, the latest production release. See the 'Changes' file in the Perl source distribution for detailed changes.
  • system() and qx// are fully implemented internally, and do not call the CRT's spawnvp(). This means that system(1,...) now returns a real process ID instead of a process handle as it used to.
  • kill() now understands real process IDs.
  • Most of the bundled modules have been upgraded to the latest versions. perldoc perllocal will show version information.
  • Uses PerlCRT version 1.04, which has a fix for a bug in 64-bit number conversions.

Build 513 (trial) Friday, February 26, 1999

Bug Fixes and Changes

  • Built around 5.005_03 Maintenance Trial No. 5, which has a number of bug fixes to the previous public release, 5.005_02. See the 'Changes' file in the source distribution for details. This trial build is for testing purposes only.
  • Propagated win32_recvfrom() fix to perl hosts.
  • Fixed bug in PerlIS that only allowed small (< 48K) files to be handled by the "post multipart form" method.
  • Fixed bug in PerlIS stemming from the use of GetServerVariable(..., "PATH_TRANSLATED",...). ServerSupportFunction(..., HSE_REQ_MAP_URL_TO_PATH, ...) is now used instead.
  • Fixed PerlScript startup script to call Win32::OLE->Initialize().
  • Fixed PerlScript problem when passing IDispatch objects as a parameter to Perl functions. The default method of the IDispatch is now called and the result passed as the parameter.
  • Uses PerlCRT version 1.03. This version fixes incorrect daylight saving time calculations, and a bug that caused Perl's tell() operator to sometimes return incorrect values when reading in textmode.
  • PPM now supports the 'trace' and 'tracefile' options, along with the 'genconfig' command.

Known Issues

  • Builds 510, 511 and 512 were never publically released.

Build 509 Monday, January 04, 1999

Bug Fixes and Changes

  • Fixed a bug in PerlScript that rendered it unusable. In, Win32::OLE::Lite needed to be 'use Win32::OLE::Lite;' instead of 'require Win32::OLE::Lite'.
  • Fixed a problem in Win32::EventLog that caused the extension to not build correctly on Alpha systems.
  • rename() is capable of renaming directories.
  • rename() is capable of renaming files across volumes, this was not previously possible on Windows systems. However this feature is not supported on Win95/98 systems.

Known Issues

  • The new rename() functionality, allowing the renaming of files across volumes, is not available on Win95/98 systems.

Build 508 December 22, 1998

Bug Fixes and Changes

  • Includes Win32::OLE v. 0.1005. See the Win32::OLE documentation for changes.
  • Fixed bug in rename($source, $target). It used to fail to rename $source if $target existed.
  • `backticks` now set the value of $? as documented.

Known Issues

Build 507 November 13, 1998

Bug Fixes and Changes

  • New PPM capable of updating itself including dependent modules and extensions
  • New XML::Parser extension (v. 2.16)
  • Latest libwin32 bundle (v. 0.13)
  • Fixed corrupt table of contents in the online documentation

Known Issues

  • `backticks` do not set the value of $? correctly
  • You must upgrade to ActivePerl build 507 before attempting to install new versions of PPM. Prior to build 507 PPM was incapable of updating DLL files that were in use.

Build 506 October 27, 1998

Bug Fixes and Changes

  • `Backticks` are fixed in PerlScript and Perl for ISAPI on Win95, Win98 and WinNT.
  • system() is fixed in PerlScript and Perl for ISAPI on Win95, Win98 and WinNT.
  • PerlScript sets the PERLXS environment variable to "PerlScript". This is useful to determine in what environment a script is being executed.

Known Issues

  • If you have the Perl Resource Kit -- Win32 Edition you should not install build 506 of ActivePerl. ActiveState will be providing a service pack which will update your PRK installation with build 506 of ActivePerl and revised utility binaries that address issues that some users have encountered. More information about the PRK is available at PRK related release information is posted to the perl-win32-prk mailing list. You can join this list and receive timely information by emailing with the following message in the body of the email:

    subscribe perl-win32-prk

Build 505 October 19, 1998

Bug Fixes and Changes

  • Fixed problem with -d and -e file test operators when they are used on a UNC sharepoint.
  • Installation adds script mappings to IIS Metabase consitently. There should not be a need to start the WWW Publishing Service before installing ActivePerl.
  • A stray version specific directory is no long pushed onto @INC. This directory showed regardless of its existence.

Known Issues

  • `Backticks` are broken in PerlScript and Perl for ISAPI on Win95 and Win98.
  • `Backticks` are broken in Perl for ISAPI on WinNT when a full pathname is specified for the executable.
  • system() is broken in PerlScript and Perl for ISAPI on Win95, Win98 and WinNT.

Build 504 October 12, 1998

Bug Fixes and Changes

  • Uninstall removes documentation, directories added to the path, changes to IIS Metabase.
  • Fixed problem with extended formats in sprintf()
  • Win32::Process module and extension are now version synched.

Build 503 October 9, 1998

Bug Fixes and Changes


  • ActivePerl is again built with -O2 compiler optimization turned on
  • Fixed bug in core when getting any port number in call to bind()
  • Updated core to support the latest version of Devel::Peek
  • Fixed $^X so that it now returns the name by which the Perl interpreter was invoked
  • perldoc now works for modules as well as POD
  • is now installed with the examples
  • Fixed problem with ProcessAffinity call in Process.dll on Win95
  • The path to PerlCRT.lib is now added to the 'libpth' value in as well as any directories specified in your LIB environment variable
  • Missing doucmentation for has been found
  • MakeMaker now supports PerlArchitecture and version dependency for PPD target
  • No need to reboot on WinNT after installing ActivePerl
  • Temporary files are deleted after installation is complete
  • Install does not create duplicate script maps in the IIS4.0 Metabase
  • Directory structure has been flattend so that the user is in control of whether to do a versioned installation


  • chdir now works
  • opendir now works
  • unlink now works
  • `backticks` now work
  • system() now works under
  • PerlScript now dynamically links to OLE.dll, so you must have version 0.1001 of Win32::OLE installed

Perl for ISAPI

  • chdir now works
  • opendir now works
  • unlink now works
  • `backticks` now work
  • system() now works


  • gets turned in to a .BAT file during setup
  • PPM proxy support now works, see PPM documentation
  • PPM makes use of XML::Parser to read and write its data file

Build 502 August 11, 1998

Bug Fixes and Changes

  • New build based on Perl 5.005_02
  • Fixes made to maintain binary compatability with 5.005
  • Improved core docs

Build 501 August 4, 1998

Bug Fixes and Changes

  • Win32-OLE and Registry modules included in their entirety.

Build 500 July 31, 1998

Bug Fixes and Changes

Known Issues

  • After installation, temporary files are not deleted
  • If you are running IIS 4.x and selected to map extensions during setup, you may have to delete duplicate mappings.
  • Response->End() is not working properly with PerlScript. You should follow any call to Response->End() with a call to exit();
  • Uninstalling a package removes any modules installed but does not remove the directory in which the module was installed.
  • Catching the interrupt signal and calling a handler does not work.
  • Proxy support may not work at all times with PPM. However, if the environment variable HTTP_proxy is set, it will be used as the address of a proxy server for accessing the Internet and this may resolve it.
  • ActivePerl should not be installed in a path that contains spaces in it, as the spaces may cause problems for some of the programs that are part of ActivePerl. It is recommended that you install ActivePerl in the default location.
  • In order to build some extensions, it is necessary to add your compiler's library path to the 'libpth' variable in

Build 476 July 21, 1998

Bug Fixes and Changes

  • When listing of packages is displayed in PPM, they no longer scroll off the top of the screen.
  • use DBI no longer causes a parse exception
  • TK and DB_File are now being built correctly
  • --location option in PPM now works properly
  • PerlIS is now getting environment variables
  • Filenames are now properly expanded on the command line, e.g. perl -d "print join(',',@ARGV)"
  • PPM turned into a batch file, so you can run it without being in your /perl/bin directory
  • If a LIB value is set in the system registry, it adds itself to the list of default LIB directories

Known Issues

  • After installation, temporary files are not deleted
  • A file type for Perl scripts is currently not being made
  • There may be remaining problems using PPM if you are behind a firewall.
  • SIG{INT} doesn't work

Build 471 July 10, 1998

Bug Fixes and Changes

  • %* in bat files now works under Win95
  • Broken HTML links in online documentation fixed
  • PATH value now created in system registry if it didn't already exist on Windows NT
  • and now installed (required for ppm)
  • PerlIS.dll (Perl for ISAP) now registered properly

Known Issues

  • When listing of packages is displayed in PPM, they scroll off the top of the screen
  • After installation, temporary files are not deleted
  • LOCATION option in PPM does not work
  • Several modules, including TK and DB_File do not work
  • A file type for Perl scripts is not being made
  • PerlIS is no longer getting environment variables
  • If LIB value is set in the system registry, it replaces the default directories.

Build 469 July 2, 1998

  • First beta release of 5.005 / merged code
  • No alpha binaries - will be available in a future release

What's changed from 300 series builds

Most modules can now be built on Win32 systems with little or no modification.

PerlScript & Perl for ISAPI are part of the ActivePerl Package.

The Perl Package Manager for managing your Win32-compatible Perl modules is now included.

The Win32::OLE::Enum module provides an interface to OLE collection objects from Perl. It defines an enumerator object closely mirroring the functionality of the IEnumVARIANT interface.


With this release, a few changes have had to be made. Some of your Perl for Win 32 3xx scripts may need a little tweaking to work, but these are minor. Here is where the changes come in:


The way in which OLE objects are created has changed.

CreateObject OLE -> new Win32::OLE

Functions replaced by the Win32 module

Old function New replacement function
OLE Win32::OLE
OLE::Variant Win32::OLE::Variant
OLE::VT_* Win32::OLE::VT_*
Win32::Reg* Win32::Registry
Win32::OpenEventLog Win32::EventLog::OpenEventLog
Win32::OpenBackupEventLog Win32::EventLog::OpenBackupEventLog
Win32::BackupEventLog Win32::EventLog::BackupEventLog
Win32::ClearEventLog Win32::EventLog::ClearEventLog
Win32::CloseEventLog Win32::EventLog::CloseEventLog
Win32::GetNumberOfEventLogRecords Win32::EventLog::GetNumberOfEventLogRecords
Win32::ReadEventLog Win32::EventLog::ReadEventLog
Win32::WriteEventLog Win32::EventLog::WriteEventLog


Functions no longer available

Old function New replacement function
Win32::PerlVersion $]

Functions that are no longer built in and require "use Win32"


Functions that are still built in (do not require "use Win32")



 ActivePerl FAQ