ActiveState's Perl Dev Kit gives Perl developers tools to build stand-alone executables, check code coverage, and intuitively create filters for searching and replacing text in files. Additional tools are included on Windows for creating system tray applications, ActiveX components, Windows services, MSI installers and .NET compliant objects in Perl; converting VBScript into Perl; and graphically debugging your Perl programs.
The Perl Dev Kit requires
ActivePerl
build 5.8.8.822 or
later for Perl 5.8 or build 5.10.0.1002 or later for Perl 5.10.
If you have problems downloading Perl Dev Kit, please contact webmaster@ActiveState.com.
--targetoption when the requested file is only available to ActivePerl Business Edition users.
The latest 5.8 and 5.10 builds of ActivePerl for Windows, Linux and OS X are freely available; all other builds require an additional Business Edition license. More information is available at ActivePerl Business Edition.
--targetoption would not work properly with the
--perloption. It would instead pick up the first perl.exe on the PATH to determine the build number and additional modules to be installed into the foreign Perl installation. This has been fixed.
--envoption allows you to specify the value that an environment variable should be set to at application runtime. This makes it easy to customize the generated executable by setting for example a serial number, a web API key, or an expiration date at build time without having to change the program code. For example:
perlapp --env API_KEY=123456 --env DEBUG=
This has the same effect as including the following block at the top of the script:
BEGIN { $ENV{API_KEY} = "123456"; delete $ENV{DEBUG}; }
utf8pragma. This has been corrected.
--targetoption with ActivePerl build 825 and later, or 1005 and later, because it could not correctly determine the locally installed modules. This has been fixed.
--targetimplementation is now able to download ActivePerl Business Edition binaries, and install additional modules from Business Edition PPM repositories when an ActivePerl Business Edition license is installed.
The GUI can be invoked correctly from a cmd.exe window by calling the commandline tool without any argument, e.g. by `perlapp`.
--dyndlloption still does not work correctly on 64-bit Windows.
--dyndlloption will work on Windows 2000 again (#83296
--manifestoption in the project file (#83146
--manifestand
--nomanifestoptions are now also supported by PerlCtrl, PerlNET, PerlSvc and PerlTray (#83036
--targetoption now works correctly with Perl build 826 and later, as well as build 1006 and later.
PerlCritic has been updated to version 1.105. It now supports the new syntax
introduced by Perl 5.10 and has several new and updated policies in addition to
the usual slew of bug fixes and improvements. Get all the details from
PerlCritic Changes
.
The Graphical Debugger for Windows (and the corresponding pdkdebug.exe system service) are no longer installed by default, but can still be manually selected in the feature selection panel of the installer.
ActiveState recommends the more powerful Perl debugger in the Komodo IDE over the PDK debugger for customers who own both products.
--dyndllstill doesn't work correctly on 64-bit Windows.
The PDK 8.0 installer on Windows unconditionally required .NET 2.0 to be installed even when the PerlNET component was deselected. This has been fixed.
The PerlNET component will also now be deselected by default if the installer cannot find the .NET 2.0 Framework.
Komodo can now correctly locate a PDK 8.x installation.
The debugger is now able to locate the sources of *.al files used by AutoLoader.
The PDK officially requires ActivePerl 5.8.8.818 or later. We do not intentionally break backwards compatibility with older versions, but using it with older versions is now unsupported.
PerlApp targeting Mac OS X and other Unix systems requires ActivePerl 5.8.8.822.
The new perlcritic-gui application is a GUI interface to the Perl::Critic set of modules. Perl::Critic policies are used to analyze Perl source code against "best practices".
perlcritic-gui acts as a policy editor for the .perlcriticrc configuration files and can also be used to run Perl::Critic against a tree of sources and walk through the scan results interactively.
PerlApp can now create non-native executables for any other platform supported by the PDK. PerlApp can automatically maintain an ActivePerl installation for these other platforms. It will try to install all locally available modules via PPM into the non-native Perl installations too.
The
--list-targets option displays a list of all available target platforms
that can be specified with the
--target option. Alternatively you can
maintain the non-native ActivePerl installation yourself and use the
--target-perl option to tell PerlApp where to find it.
Cross-platform building works with ActivePerl 818 and later.
The
--add option now supports the same set of wildcards as the
--trim
option.
PerlApp, PerlCtrl, PerlNET, PerlSvc and PerlTray support user supplied
manifests using the
--manifest option. The
--nomanifest option specifies
that no manifest at all should be added.
The default manifest has been updated to specify a requested execution level of "asInvoker" for Windows Vista and later.
Dependency heuristics have been updated for various popular packages.
Graphical Debugger PerlMSI PerlNET
It is possible to use the 32-bit version of the PDK on 64-bit Windows for these tools, and both 32-bit and 64-bit versions can be installed at the same time.
sudo ln -s / /cow
--addoption to force the inclusion of a module. This is usually only needed for scripts using extensions that execute 'require' or 'do' operations at runtime.
PATHenvironment variable. Alternatively (on Windows), you can bind such libraries into the executable using the
--bindoption.
--interactive option.
!character. However, if you run a PDK tool, the executable or control that is produced will contain the icon.
fork()on Unix with either a Tk application or the
--cleanoption (extracted files are deleted once the first process terminates; additional files may not be extracted because directories are already deleted, etc).
Win32::OLE) or a process that has loaded a Perl interpreter, then that version of Perl must be ActivePerl 638 or later. The perl dll bundled with the control is ignored. It is not possible to load two different perl libraries into the same process.
--freestandingis still not completely freestanding; you also need to deploy perlXX.dll (where XX is 56, 58, or 510), perlXXnh82.dll and perlXXrt82.dll.
character(s)with
@or
$using the Filter Builder, these characters will appear in the output with preceding backslashes (i.e.
\@,
\$). In addition, if the specified replacement is a dollar sign followed by an "and" sign (i.e.
$&), the Filter Builder returns an error message.
For example, the following VBScript code:
dim test_array(3, 3) test_string = test_array(2, 1)
...is converted by VBSPerl into:
my @test_array; $test_string = @test_array(2,1);
The Perl equivalent is actually:
my @test_array; $test_string = $test_array[2 * (3 + 1) + 1];
--warningsoption will display all warnings produced during a build without showing all the included files that
--verbosedoes.
The tools will also display a summary count of all errors and warnings to make sure this information doesn't get lost in the potentially long verbose output.
Win32module would trigger it.
PerlNET has been added back to the PDK.
Please make sure you deploy the correct libraries with your projects!
--dyndll, and without. This includes finding additional libraries automatically that are residing in the same directory as a Perl module (#73572
All tools included in PDK 7.1 support ActivePerl 5.6, 5.8 and 5.10.
--dyndlloption would sometimes crash on Windows Vista. This affected especially Win32::GUI applications. This problem has been fixed (#73717
pod2usage()function has been added (#20990
ToolTip()callback (#68885
The only supported Perl 5.6 version is ActivePerl 5.6.1.638.
The Linux release of PDK 7.1 now requires glibc version 2.3 or later.
The Solaris release of PDK 7.1 now requires Solaris 8 or later.
The Windows release of PDK 7.1 now requires Windows 2000 or later. Earlier Windows versions may continue to work for now, but are no longer supported.
PerlCov is a new tool for analyzing code coverage and hotspots in Perl programs and test suites. Check out the overview!
PDK 7 includes PerlApp, Filter Builder and the new Coverage and Hotspot Analyzer for OS X. ActivePerl 816 or later is required for universal binary support in PerlApp.
64 bit commandline versions of PerlApp are now included for Linux (x64), Solaris (Sparc) and Windows (x64). 64 bit commandline versions of PerlCtrl, PerlSvc and PerlTray are also included in the Windows builds.
The 64 bit tools are available in a separate download. They must not be installed into the same directory as the 32 bit tools if both versions are installed on the same machine.
PDK 7 supports Solaris 10 on Intel (x86) hardware with the GUI interface to PerlApp, Filter Builder, and the Coverage and Hotspot Analyzer.
The PerlApp GUI and Filter Builder are now available for AIX 5.x too.
The commandline version of PerlApp is now available for HP-UX on Itanium.
--xcludeoption for Unix, and
--dependentand
--xcludeapplications are much smaller now.
Only libperl.so from ActivePerl 819 and later is fully compatible with the new mechanism. PerlApp will use its own bundled libperl.so for older versions of ActivePerl. It also bundles a special libperl.so to use with Perl 5.6.
--use(#35829
--cleanoption now works on all platforms.
--runliboption has always been documented to add the $PerlApp::RUNLIB directory to the PATH, but didn't actually do it. This has been fixed.
--dyndlloption now work on systems that have the DEP (Data Execution Prevention) feature enabled (#36715
--dyndlloption no longer refuse to run on Windows 9X. Instead they operate as if they had been built without the
--dyndlloption, writing bundled DLL files to disk as necessary.
For example PerlApp will now bind the required data files for Unicode::UCD and
PDF::API2 automatically
(#45710
).
On Windows ssleay32.dll and libeay32.dll are bound automatically when the
Net::SSLeay or
Cryt::SSLeay modules are being used.
ALso on Windows the VC++ runtime libraries MSVCR70.dll and MSVCR71.dll
will be included if an extension module has been linked against them
(#67313
).
Encode::XXmodules (
CN,
JP,
KR, and
TW) by default in every application that uses the
Encodemodule. They need to be requested explicitly by either a "use Encode::XX" statement in the source, or by an
--addcommandline option.
Similarly modules from the
PDF::API2::Resource::CJKFont and
PDF::API2::Resource::CMap hierarchies are not included by default and must
be requested explicitly.
PERL5LIB. You need to add this directory explicitly to either
PERL5LIB, a
-Icommandline option, or a
use libstatement when you want to use the
MSImodule.
TimeChange()callback whenever the system clock changes. This is important because changes to the system clock does not change the expiration time for any running timers.
ToolTip()callback was broken in PDK 6.0.2. The documented behavior has been restored. (#42035
Execute()function used to fail when Win32::OLE was used in a PerlTray application. This has been fixed by making sure that PerlTray always runs code in a single threaded apartment (#45885
die()or
exit()from inside a Download(),
PopupMenu()or
ToolTip()callback. These exceptions are no longer trapped and ignored, but will shut down the application now (#43802
Perl Dev Kit 6.0.2 is a bug fix release. The following bugs has been fixed:
HTTP::Message,
Net::POP3,
Regexp::Common,
Test.pm,
Tk::DropSiteand
utf8.pm.
exit()when running inside PerlTray (#35330
A tutorial that demonstrates how to use Filter Builder has been added.
The Deployment Tools are now supported in a limited edition (only PerlApp command line version) for Solaris 10+ on x86.
Perl Dev Kit 6.0.1 is a bug fix release to restore compatibility with ActivePerl 5.8.6.811 and later. The Deployment Tools in Perl Dev Kit 6.0 did not properly detect and bundle the complete set of Unicode support files in Perl 5.8.6, creating spurious warnings and failures at runtime of the generated executables.
This change does not affect any of the Productivity Tools, nor the Deployment Tools when used with ActivePerl 5.8.4.810 or earlier.
The Deployment Tools are now supported in a limited edition (only PerlApp command line version) for AIX.
The Perl Dev Kit is now available in three different packages to better accommodate the differing needs of developers. All available features are included in the Perl Dev Kit Pro Pack. Users also have the option of purchasing the Perl Dev Kit Deployment Tools, which includes PerlApp, PerlCtrl, PerlMSI, PerlNET, PerlSvc and PerlTray, or the Perl Dev Kit Productivity Tools, which includes the new Filter Builder and VBScript Converter tools along with the Graphical Debugger.
The Filter Builder is a graphical tool used to construct filters that match strings or Perl5 regular expressions in text based input files, such as log and XML files. You can also alter the contents of files by using the Filter Builder to specify replacement criteria to apply to the input. Filters created with the Filter Builder can be saved as Perl scripts and run from the command line.
The VBScript Converter is a graphical tool that translates
VBScript code to its functional equivalent in Perl. The converter, which can
also be run from the command line as.
Prior to this release, all of the Perl Dev Kit components, with the exception of the Graphical Debugger, could only be run from the command line. PerlApp, PerlCtrl, PerlNET, PerlSvc and PerlTray can all now be launched as graphical applications that offer all of the functionality available through the command-line interface. For more information, see the documentation for the individual PDK component.
The PDK now provides an internal library loader to load libraries directly into
the process space without writing them to a temporary directory. This avoids
cluttering the hard disk with temporary files, prevents problems that occur
when two applications try to extract the same file at the same time, and
improves application security. Enable this option in
PerlApp, PerlSvc
and PerlTray by selecting Use the in-memory
dynamic DLL-loader at runtime on the Options 2 tab or using the
--dyndll
command-line option.
Options have been added to PerlApp, PerlCtrl, PerlSvc and PerlTray that make it
possible to share executables and controls and specify run libraries. The
command-line options include
--runlib,
--scan,
--shared and
--use.
For more information, see the command-line reference for the specific tool.
These features are also accessible via the Options 1 and Options 2 tabs
in the graphical interface for these tools.
--trimoption to remove encoding modules not needed by your application, as some of these encodings are large (about 800KB each for
Encode::CN,
Encode::JP,
Encode::KRand
Encode::TW).
:komodoport argument for the
--debugoption now uses port 9011 instead of 9010 to be compatible with the defaults of Komodo 2.5.
This problem does not apply to modules that are included directly or indirectly by the main script via "use" statements. The processing of their END blocks would properly be delayed until final Perl interpreter destruction.
This problem has been fixed for Perl 5.8. For Perl 5.6 you must "use" the necessary modules in your main script to work around the problem.
Win32::OLE::Varianttype correctly.
--byrefoption, PerlCtrl passes it as a
Win32::OLE::Variantobject and does not convert it to a native Perl data type. The control method can now use the
Put()instance method of this parameter to change the value of the caller's variable.
If the version of
Win32::OLE is greater than 0.17 (ActivePerl build 807 and
later), then the "Variant" option is set implicitly by the
--byref
command-line option:
Win32::OLE->Option(Variant => 1);
The effect of this is that
VT_CY and
VT_DECIMAL values are always kept as
Win32::OLE::Variant objects, even when they are not passed by reference.
Previously, the following VB statements had the same effect on the PerlCtrl object:
perlobj.prop = obj Set perlobj.prop = obj
Now the first statement invokes the default method, and the second does not.
AddLicenseText()method was used to replace all single quotes in the RTF text with the
\rquoteescape. This was incorrect if the quote was already part of a hex escape
\'hh. These escapes will now be retained correctly.
In this release PerlNET does not pick up locale changes by, for example,
POSIX::setlocale. This may be implemented in a future release. If you need
full control over the conversion process, please use the
System.Convert
component of the .NET framework.
ShutDown()callback to inform the application that the system is shutting down or that the user is logging off.
HTTP_PROXYenvironment variable doesn't specify either of the http: or the https: protocol schemes.
Died at perlxxx line yyy. myapp.pl had compilation errors.
This problem seems to be related to shells not inheriting the current working directory, but setting a fixed startup directory, for example, via AutoRun for the cmd.exe shell. This problem has been fixed.
--infocommand-line option). Also some defaults have changed: Language is now "Neutral" instead of "US English", and product and file versions are 0.0.0.0 instead of 1.0.0.0.
exit()function.
Win32::OLE0.16 or later is being used. Previous versions of PerlCtrl always coerced strings into the Latin1 codepage. Note that using Perl 5.8 is strongly recommended for any Perl operations involving Unicode.
Win32::GUImodule doesn't set up the Perl context correctly in Windows procedure callbacks. PerlTray now makes sure that the context is always set up.
Execute()were hidden. Now they are created visible.
--noguioption for debugging.
%TypeLibhash supports the new attributes
HelpFileName,
DocStringand
HelpContext. Each method and property can have a
DocStringand
HelpContextattribute too. Check out the "Linking to Compiled HTML Help" page in the user guide for more information. The 'MyControl' sample has also been updated to show how this works.
ReadOnlyattribute on properties is now enforced at runtime. Previously, this was advisory only (listed in the type library), and you could still assign to a read only property at runtime. Now this generates an error.
die { Source => "My.Control", Code => 42, Description => "Oh no!", HelpFile => "c:\\path\\to\\MyHelpFile.chm", HelpContext => 10 };
A normal die "My fault" is equivalent to:
die { Source => "My.Control", Code => 9, Description => "My fault" };
The
Source element defaults to the ProgID of your control and should
normally not be changed.
Code defaults to
9 for historical reasons. Note
that VB recommends using codes above 1000 for custom errors. The
HelpFile is
automatically set to your control help file if you specify just the
HelpContext.
PerlNET::extract_bound_file()and
PerlNET::get_bound_file()were previously only available through the
PerlApp::namespace. They are now in
PerlNET::too.
$Config{Dependencies}setting allows the specification of prerequisite services that must be started before this service can run. The value should be either a string or a reference to an array of strings.
$Config{StartNow}specifies if the service should be started immediately as part of the
--installprocess. By default only services with an "auto" StartType are started immediately.
Startup()function is called,
$Config{StartType}is now filled in correctly.
--singletonoption specifies that only a single instance of the application is allowed to run. Additional instances forward their command-line parameters to the
Singleton()callback of the already running instance, and then terminate immediately.
--noguioption marks the executable as a console application. This is useful for debugging because the output to STDOUT and STDERR is visible in the console window.
Click()callback has been documented.
DisplayMenu()function displays the popup menu at the current cursor position. This function is typically invoked via a hotkey callback.
RegisterHotKey()function registers a global Windows hotkey and invokes a callback whenever the hotkey is pressed.
--iconoption as the default icon. All icons are available by name too (for
SetAnimation()and
SetIcon()).
Download()function used to leak a handle and a little memory. It would also crash under certain circumstances. This has been fixed.
SOAP::Lite), the debugger would not display the source code. This has been fixed.
XML::Parsermodule loads the
utf8module at runtime. This rule has been added to the dependency analyzer.
STDOUT. It now prints them to
STDERR.
Install()and
Remove()callbacks were not called when using old-style configuration via
$PerlSvc::Name. With new-style configuration via
%PerlSvc::Config,
Install()would be called twice, both before and after the installation. These errors have been corrected.
perlsvcinstead of the
perltraycommand in the build.bat file. This has been fixed.
--add utf8command-line option on Perl 5.8. Now PerlTray automatically recognizes that
XML::Parserneeds the
utf8module on Perl 5.8.
Perl Dev Kit 5.0 supports both Perl 5.6 (ActivePerl build 6xx) and Perl 5.8 (ActivePerl build 8xx). It contains the following changes compared to Perl Dev Kit 4.1.
$PerlNET::VERSIONor
PerlNET::exe().
plccommand would always overwrite an already existing output file. In PDK 5.0, you need to specify the
--forceoption.
$0now contains the command-line command that started the application. Use
PerlNET::exe()to determine the fully qualified path.
Win32::ODBCor
Win32::OLE.
Sleep(DELAY)method suspends the service for DELAY seconds, but returns early if the service receives a
PAUSE,
STOPor
SHUTDOWNcommand. The
ContinueRun()function now takes an optional
DELAYargument to suspend execution for
DELAYseconds, except for the very first time it is called. The new
RunningAsService()function returns true when running as a service, and false otherwise.
InterActive()callback is invoked when the service is invoked from the command line, but without any of the
--install,
--remove, or
--helpoptions.
$PerlSvc::Nameand
$PerlSvc::DisplayNameglobally, the service can now also set up the
%PerlSvc::Confighash inside the
Install()and
Remove()callbacks. The
%Confighash supports additional options, like
Parametersand
Description, and allows you to install the same service multiple times using different names and parameters.
$/to newline "
\n" on each "step" operation. This has been fixed.
Perl Dev Kit 4.1.2 contains fixes for the following bugs in the 4.1.1 release:
&Digest::MD5::md5_hex function called with reference argument at
/PerlApp/PerlApp/Util.pm line 252, <$f> line 1.
A consequence of this bug is that applications not using the
--clean options
may still not share their version of perl56.dll.
This bug also exists when using earlier versions of ActivePerl; they just wouldn't display the error message.
--freestandingapplications. Now they are added in
--dependentapplications as well.
--cleanwas used.
This release also contains a reworked license agreement, which is linked directly into the HTML documentation on Windows as well as being included with the Unix tarballs.
Perl Dev Kit 4.1.1 contains fixes for the following bugs in the 4.1 release:
Perl Dev Kit 4.1 is a free maintenance update for Perl Dev Kit 4.0; it does not require a new license. It contains the following bug fixes, enhancements and new features: PerlApp, PerlCtrl and PerlSvc
DBD::CSV
SQL::Parser
Tk::Scrolled
Win32::SystemInfo
SetDualVarmodule is only a warning when requested by
Win32::TieRegistry.
--bindoption accepts additional parameters. For example, to bind a text file, and extract writable:
--bind data.txt[text,mode=0777]
...or to bind an executable and auto-extract on application start:
--bind foo.exe[file=bin\myfoo.exe,extract]
The extraction directory gets added to
PATH (and
LD_LIBRARY_PATH) if the
application binds "auto-extract" files. It is also added to the front of
@INC.
--guiand
--helpoptions now work even if Perl is installed in a path containing spaces.
--iconwould only work with small icon files. Bigger icons (and version resource information) could render the executable unusable. This has been fixed.
--helpimprovements:
perlapp --help bind perlapp --help ENVIRONMENT
--inforequired 4 parts for file and version numbers. Missing elements are now assumed to be 0.
There is no such thing as a "filenumber" or a "productnumber". They are "FileVersion" and "ProductVersion" respectively.
--libnow automatically adds version-specifc and architecture-specific subdirectories, just like PERL5LIB.
--scriptoption is now supported for backwards compatibility with PDK 3.0
--trimoption now supports the following wildcard notations:
--trim Module::* will exclude Module::Foo, but neither Module itself nor
Module::Foo::Bar.
--trim Module::** will exclude Module::Foo and
Module::Foo::Bar, but not Module.
--trim Module:: works the same as
--trim
Module;Module::**, excluding all of Module, Module::Foo and Module::Foo::Bar.
Note that you may have to quote the * character to prevent wildcard expansion
by your command shell.
--debugoption if the #! line of the script contains -d
use Win32::Eventlog;
...instead of:
use Win32::EventLog;
PerlApp::exe()API, which returns the full path name to the application, is now documented. This function has been in PerlApp for Linux and Solaris since 3.0 and in PerlApp for Windows since 4.0. On Linux it used to return a symbolic link into the /proc file system. On Solaris it would return just a filename without a path if invoked from the current directory. Now it should return the fully resolved absolute path on all platforms.
PerlApp::extract_bound_file()extracts bound files to a temporary location on the filesystem, which is automatically deleted when the process terminates.
PerlApp::namespace, even from within PerlCtrl and PerlSvc. For example:
PerlCtrl::get_bound_file($filename)
...can be called as:
PerlApp::get_bound_file($filename)
$PerlApp::BUILDvariable contains PerlApp build number.
Retval = MyObj.Foo()
...but not when it was called as subroutine:
MyObj.Foo ()
This has been fixed. Note that this was not a problem when calling methods on the PerlCtrl object itself. Only methods on "other" Perl objects exhibited this bug.
die()message is returned as the exception information.
CoCreateInstance()call for a PerlCtrl inside Visual Studio produced an access violation. This has been fixed.
Constructor,
RegisterServerand
UnregisterServer.
RegisterServercallback.
%TypeLibelements. Better error checking for
%TypeLibhash.
Scalar()and
List()methods on factory objects to specify a calling context didn't work. This has been fixed.
As a consequence, all the value types are passed from .NET to Perl encapsulated as objects with overloaded stringification and numification rules. Otherwise they couldn't retain information about their original types.
There are now constructors for all the basic .NET value types too. For example:
my $ch = PerlNET::char('a');
--freestandingassemblies still needed
--addoverload. This has been fixed.
$thisand a
$selfargument.
PerlNET::get()and
PerlNET::set()helper functions to access static fields and properties have been documented.
$PerlSvc::Nameto the actual service name before calling
PerlSvc::Startup().
--explainoption provides information about why a module is being included by PerlApp.
--nogloband
--noerrnoLinux and Solaris options have been replaced by the generalized
--trimoption.
perlapp @MyOptions.rsp MyApp.pl
A number of options in PerlApp and PerlCtrl in this release work slightly different from the way they used to work: PerlApp and PerlCtrl
--bindoption no longer extracts files to disk. The content of these files is available via the
PerlApp::get_bound_file($filename)method (or
PerlCtrl::get_bound_file($filename)).
--addoption works differently for dependent executables. Please check the documentation of the
--add,
--lib,
--blib,
--trimand
--explainoptions.
--dependentoption switches to non-freestanding mode. The old abbreviation
-fis now a shortcut for
--force, which overwrites the output file without asking (this was already the case for the Linux and Solaris versions of PerlApp from PDK 3.0). These defaults can now be changed with the environment variables
PERLAPP_OPTand
PERLCTRL_OPT.
--reportoption no longer exists.
--cleanoption). There is a new
--tmpdiroption to provide hard-coded locations for these temporary files (for virtual web servers that don't have write access to the standard TEMP directory).
PerlCtrl::RegisterServeror
PerlCtrl::UnregisterServerfunctions to be executed as user hooks at those times.
my $var; sub Property { return $var unless @_; $var = shift; }
If you implement properties via package variables, make sure you don't define Perl subs of the same name.
FailIfProductsFoundand
WarnIfProductsFound.
File::Globmodule.
-dswitch to PerlApp, etc).
CGI,
LWP,
MLDBM,
Net::FTPor
URI. Tk widgets still need to be explicitly added using
--addif they are not listed in a 'use' statement.
Build 209 was the initial release of PDK 2.1. Build 210 is essentially the same software with an updated installer program. The 209 installer would not work correctly when a previous version of the PDK was already installed.
-eswitch.
fork()support in PerlApp and PerlSvc. The limitations of the
fork()emulation outlined in Perl's standard perlfork documentation page apply here too.
--xcludeoption to leave out Perl56.dll from the executable, making it much smaller. To run such executables, Perl56.dll must be made available on the target computer in the PATH.
--bindoption to add additional files to the executable. These files are extracted into the filesystem when the executable runs.
glob()in PerlApp, PerlCtrl and PerlSvc have been removed because Perl 5.6 now implements
glob()via the standard
File::Globextension.
HTTPS_*environment variables.
--cleanoption clean up cached files in the TEMP directory. However the directory with the same name as the PerlCtrl, immediately under the TEMP directory, is not removed in case there were other versions of the PerlCtrl built without the
--cleanoption.
Note: Cached files are not deleted on Win95 due to a Win95 bug involving
recursive calls to
FreeLibrary(). This is not a problem on Win98 or WinNT.
eval()error.
--cleanoption clean up cached files in the TEMP directory. However the directory with the same name as the PerlApp, immediately under the TEMP directory, is not removed in case there were other versions of the PerlApp built without the
--cleanoption.
Note: Cached files are not deleted on Win95 due to a Win95 bug involving
recursive calls to
FreeLibrary(). This is not a problem on Win98 or WinNT.
eval()error.
--guioption.
--infooption, which allows you set the version information of the resulting DLL file. See the documentation for information regarding which values may be set.
--infooption, which allows you set the version information of the resulting EXE file. See the documentation for information regarding which values may be set.
--cleanoption, which deletes the freestanding file cache when the PerlCtrl DLL file is unloaded.
--cleanoption, which deletes the freestanding file cache when the PerlApp DLL file is unloaded.
chdir()in PerlSock was keeping VPM from installing packages properly. This problem has been fixed.
zlibin ActivePerl build 522 now uses
PerlIO_open()instead of
fopen(); this enables proper translation of pathnames, which was another issue preventing VPM from installing packages properly.
File::Copyin PerlScript and Perl for ISAPI.
--add <list> option to force inclusion of a list of modules separated with semicolons.
--guioption to create an executable file that has no console window.
--add <list> option to force inclusion of files specified by list.
Could not load PerlEz.dll in GetPerlDirectories() This has been fixed.
eval()for freestanding builds.
eval()for freestanding builds.
eval()for freestanding builds.
qx(net user $username /domain);or
@userinfo = 'net user $username /domain';now can be built properly by PerlApp.
SECSplashWnd: PERLDB.EXE Application Error
-drbcommand-line option (for building DCOM registration binaries) has been changed to
-rb
ReadOnlyproperty now works properly. For example:
Properties => { 'myProp' => { Type => VT_BSTR, ReadOnly => 1, },
system()commands and commands in backticks would not execute in freestanding .exe files in Beta 3.
exit()with non-zero code now exits gracefully in .exe file.
AdminMiscmodule.This has been fixed.
TestRe.docexample now works properly: if no text is selected, text replacement occurs in the entire document.
require "filename.pl";now includes the proper module. In previous versions of PDK, it was assumed that required files ended in .pm.
Could not load PerlEz.dll in Get PerlDirectories()
Requires Win32::OLE module version .1005 or higher.
Improved error checking and minor bug fixes.
In the Beta 3 release, the pl2exe utility was replaced with the PerlEXE utility. The final release of PDK 1.1 now contains a utility named PerlApp that replaces pl2exe and PerlEXE.
It is no longer necessary to have Perl installed in order to use controls or executables that are built using these 2 tools. You now have the option of building freestanding PerlCtrl DLLs and PerlApp executables.
system()now works on Windows 95, Windows 98 and WinNT. A parameter bug was fixed. PerlCOM now tries to find the executable if the full path is not specified.
File::Findnow reports the correct file size.
-DRB, which stands for "DCOM Registration Binary". A DCOM Registration Binary is an executable that contains all the registration information for a PerlCtrl. The executable produced can be used to create the proper PerlCtrl registry entries on a machine where the control is not present.
PerlCOM::CaseSmash() Failed: Ambiguous method or property call for ...
$objPerlCOM->List->Method(). Scalar context can also be explicitly set by $objPerlCOM->Scalar->Method(). See the Arrays section in the PDK help file for more information regarding this topic.