| Store | Cart

ActiveState Docs

ActivePerl 5.6 Documentation


ActivePerl -- Release Notes

Welcome, and thanks for downloading ActivePerl. This release corresponds to Perl version 5.6.1.

Please note that ActivePerl 600 series builds are NOT binary-compatible with the older 500 series builds. In particular, do not attempt to use extensions or PPM packages built for the 500 series builds with ActivePerl 600 series builds and vice versa. This build is binary compatible with previous 600 series builds.

Binaries for the following platforms are available:

  • Linux x86 for Red Hat 6.2 or later

  • Linux x86 for Debian 2.2 or later

  • Solaris sparc for Solaris 2.6 or later

  • Windows x86 for Windows 9x, NT, Me, 2000, XP and 2003 Server

For a granular list of the changes included in this release, see the ActivePerl Change Log.


The following list is a general summary of the known incompatibilities between the 5.6.1 source code release and earlier releases. Be sure to consider these very carefully before upgrading.

  • Compatibility macros for global variables are not available by default, to control namespace pollution. If older extensions don't build because of missing symbols, try ``perl Makefile.PL POLLUTE=1'' first.

  • Subroutines named CHECK are considered special, and will be automatically executed when the compilation of the main program ends. Rename such functions to lower/mixed case.

  • $English::PERL_VERSION is now an alias for $^V (a string) rather than $] (a number). You may need to use the ``%vd'' sprintf format to display this correctly.

  • Literals of the form 1.2.3 parse as chr(1) . chr(2) . chr(3) rather than as "1.2" . 3.

  • rand() may yield a different (but usually more random) sequence due to internal changes.

  • Iterating over hashes may yield a different order than before due to changes in the hashing function used.

  • The undef operator raises an exception when applied to read-only values.

  • The close-on-exec bit is now set on pipe and socket handles as well, if you set $^F high enough.

  • "$$1" always means "${$1}" now, rather than $$ . "1" (which was deprecated in 5.004).

  • delete(), each(), values() and \(%h) operate on aliases to values, instead of on copies. You may need to copy the values explicitly where needed.

  • vec() will raise an exception if the BITS argument is not a power-of-two integer.

  • not followed by parentheses behaves like a list operator. This allows grep not($_), @things to work as expected, but also changes not (1,2,3)[0] to mean (not(1,2,3))[0] instead of not((1,2,3)[0]).

  • The semantics of the bareword prototype (*) have changed to make it possible to pass barewords, as in many builtins.

  • Bitwise operators on 64-bit platforms operate on the entire native width rather than just the lower 32 bits. (You must mask off the excess bits if you don't want them.)

  • More builtins taint their results due to higher security paranoia, when perl is running under taint mode (enabled via the -T switch).

  • If you have a perl installation older than 5.005, note that 5.6.1 won't be binary compatible with it. You will need to recompile all extensions when upgrading from installations older than 5.005. (This only applies when building from the source code--ActivePerl builds based on 5.6.1 are not binary compatible with builds based on 5.005 and earlier.)

Known Issues

All Platforms

  • A definitive summary of platform-independent changes and known issues in this release is available in perldelta and in the CHANGES log that comes with the ActivePerl distribution.

  • Unicode support still has various known bugs. Please refer to the perlunicode documentation.

Linux and Solaris

  • Some versions of tar on Solaris have bugs that prevent proper extraction of files in a package that has long path names. Most other versions of tar on Solaris use a different method than GNU tar to encode pathnames longer than 100 characters. GNU tar is therefore required to extract the package into the filesystem correctly. A precompiled version of GNU tar for the sparc platform is available from:

    You can also get the source package for GNU tar from:


  • If you are upgrading from build 613, the default location for the ActivePerl installation when using the native installations on Unix (Red Hat RPM, Debian dpkg, or Solaris pkgadd) has changed. Build 613 and earlier installed ActivePerl at /usr/local/perl-5.6, whereas later builds are installed at /usr/local/ActivePerl-5.6. This one-time change avoids confusion with locally installed versions built from the sources, and also avoids installing on top of existing binary-incompatible installations.

  • This build is not binary compatible with build 613 and earlier. If you installed any extensions containing XS code with build 613 or earlier builds (via PPM or otherwise), you will need to reinstall them again.

  • The suidperl executable is not included in this package due to potential security issues. If you wish to use suidperl in your installation, we recommend building Perl from source. The source code for ActivePerl is available at: http://www.ActiveState.com


  • ActivePerl depends on MSVCRT.DLL being installed on the target system. This file ships with all versions of Windows except for Windows 95. If you do not have this file installed on your system you may experience problems installing and/or running components within ActivePerl.

    You can download a self extracting executable that contains MSVCRT.DLL from:


    Save the file in a temporary directory and double click on it to extract the files. Follow the instructions in the ReadMe.txt file contained in the package in order to install the missing file.

  • The fork() emulation has known limitations. See perlfork for a detailed summary. In particular, fork() emulation will not work correctly with extensions that are either not thread-safe, or maintain internal state that cannot be cloned in the psuedo-child process. This caveat currently applies to extensions such as Tk and Storable.

  • It seems that numerous people are being bitten by this error from the ActivePerl MSI installer. The full text of the error message probably looks something lke this:
        Installer Information
        Internal Error 2744. PPM_CONFI, C:\perl\bin.
        "C:\Perl\bin\wPerl.exe" "C:\Perlbin\configPPM.pl"
        "C:\Perl\site\lib\ppm.xml" "D:\downloads\perl\\"

    The first thing to note is that you CANNOT install ActivePerl 5.6 over an older version of ActivePerl based on 5.005, such as build 522 or any 500 series build.

    We have determined that one cause of this error message is due to other installations of Perl that may be pointed at by something in the environment.


    The sure-fire solution is to make absolutely certain that no other installations of Perl are on the target machine. Realizing that this is not always possible, you can follow these steps to ensure the other installations will not interfere.

    1) Stop the ``Windows Installer'' service. This can be accomplished from the command prompt using the following command:

        c:\> net stop "Windows Installer"

    2) Temporarily remove or rename PERLLIB and PERL5LIB environment variables in the system environment.

    3) Temporarily remove or rename the following registry values:

        [\\HKEY_LOCAL_MACHINE\Software\Perl] lib = <directory> (REG_SV)
        [\\HKEY_LOCAL_MACHINE\Software\Perl] sitelib = <directory> (REG_SV)
        [\\HKEY_LOCAL_MACHINE\Software\Perl] lib-<PerlVersion> = <directory> (REG_SV)
        [\\HKEY_LOCAL_MACHINE\Software\Perl] sitelib-<PerlVersion> = <directory>(REG_SV)

    4) Proceed with the installation.

    Once the installation has completed successfully, the above actions may be undone although restoring the environment variables or the registry values may interfere with the proper operation of your new ActivePerl installation.

    In order to perform all of the above steps, you will need to have Administrative privileges on the target machine. If you do not have the required privileges you should contact you Administrator.

  • Norton AntiVirus 2000 detects VBS.NewLove.A in the file ActivePerl-Winfaq12.html.


    This is a false positive by Norton AntiVirus. ActivePerl-Winfaq12.html has been examined by hand, and it is likely that the following example code is what causes the false report.

        <P><CODE>use strict;<BR>
          use Win32::OLE;<BR>
          use Win32::OLE::Const 'Microsoft Outlook';<BR>
          my $Outlook = Win32::OLE-&gt;new('Outlook.Application', 'Quit');<BR>
          my $ol = Win32::OLE::Const-&gt;Load($Outlook);<BR>
          my $namespace = $Outlook-&gt;GetNamespace(&quot;MAPI&quot;);<BR>
          my $Folder = $namespace-&gt;GetDefaultFolder(olFolderInbox);<BR>
          my $NewFolder = $Folder-&gt;Folders-&gt;Add(&quot;Test1&quot;);</CODE></P>

    This can be tested by removing the above code from the ActivePerl-Winfaq12.html file and rescanning with Norton AntiVirus. Norton AntiVirus will no longer detect VBS.NewLove.A.

    Symantec has been notified of this issue.

  • The following Microsoft knowledge base articles may be helpful in solving MSI problems:

    Q236597 - OFF2000: Error Message: The Installation Package Could Not Be Opened ... http://support.microsoft.com/support/kb/articles/Q236/5/97.ASP

    Q224094 - OFF2000: Error Message: This Application Requires the Windows Installer to Run http://support.microsoft.com/support/kb/articles/Q224/0/94.ASP

    Q247532 - Works 2000 Err Msg: Installer Terminated Prematurely http://support.microsoft.com/support/kb/articles/Q247/5/32.ASP

    ``Error 1303. The installer has insufficient privileges...'' Running Office Setup http://support.microsoft.com/support/kb/articles/Q228/6/58.ASP

    Error Message: Error 1316 Running Setup for Admin Installation http://support.microsoft.com/support/kb/articles/Q228/5/92.ASP

    Error 1327 Invalid Drive During Office Installation http://support.microsoft.com/support/kb/articles/Q217/6/66.ASP

  • On Windows 9x, the system must be rebooted for the PATH environment variable to take effect.

    On Windows 9x, the PATH environment variable settings are not removed after an uninstall.

Further Information

The Perl distribution comes with extensive documentation. On Unix platforms, all the standard documentation is installed as man pages under the Perl install location. The location of the man pages may need to be added to the MANPATH environment variable in order to access them. For example, in the C shell:

    % setenv MANPATH /usr/local/ActivePerl-5.6/man:$MANPATH

The documentation is installed in HTML format on all platforms. If ActivePerl was installed in /usr/local/ActivePerl-5.6 then the HTML documentation would be located in /usr/local/ActivePerl-5.6/html.

On Windows, the standard documentation along with Windows-specific Perl documentation is installed in HTML format, and is accessible from the ``Start'' menu.

Updated versions of the HTML documentation will always be available at the ActiveState website:


Reporting Problems

Please report any problems you encounter with this release at the following location:


If you do not have web access, reports can be also sent via email to ActivePerl-Bugs@ActiveState.com. Please be sure to include detailed information about the platform in your message.

As far as possible, please ensure that there is enough information in the report to reproduce the bug elsewhere. It also helps to submit a minimal test case that exhibits the bug.