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 638 or
later.
If you have problems downloading Perl Dev Kit, please contact webmaster@ActiveState.com.
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
).
--add option to force the inclusion of a module. This is usually only needed
for scripts using extensions that execute 'require' or 'do' operations at
runtime.
PATH environment variable. Alternatively (on Windows),
you can bind such libraries into the executable using the --bind option.
--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 --clean option (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.
--freestanding is still not completely freestanding; you also need to deploy
perlXX.dll (where XX is 56, 58, or 510), perlXXnh72.dll and
perlXXrt72.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];
All tools included in PDK 7.1 support ActivePerl 5.6, 5.8 and 5.10.
).
).
--dyndll option 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.
--xclude option for Unix, and --dependent
and --xclude applications 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
).
--clean option now works on all platforms.
--runlib option has always been documented to add the $PerlApp::RUNLIB
directory to the PATH, but didn't actually do it. This has been fixed.
--dyndll option now work on systems that have
the DEP (Data Execution Prevention) feature enabled
(#36715
).
--dyndll option no longer refuse to run on
Windows 9X. Instead they operate as if they had been built without the
--dyndll option, 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::XX modules (CN, JP, KR,
and TW) by default in every application that uses the Encode module.
They need to be requested explicitly by either a "use Encode::XX" statement in
the source, or by an --add commandline 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 -I commandline option, or a use lib statement when you
want to use the MSI module.
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::DropSite
and 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 vbsperl, simplifies tasks such as
generating Perl code from VBScript snippets found on the internet and
converting snippets of Visual Basic for Applications (VBA) code generated by
macro recorders in Microsoft Office programs to Perl code for use in a separate
application.
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.
--trim option 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::KR and Encode::TW).
:komodo port argument for the --debug option 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::Variant type
correctly.
--byref
option, PerlCtrl passes it as a Win32::OLE::Variant object 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 \rquote escape. 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_PROXY environment
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.
--info command-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::OLE 0.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::GUI module 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.
--nogui option for debugging.
%TypeLib hash supports the new attributes HelpFileName, DocString and
HelpContext. Each method and property can have a DocString and
HelpContext attribute 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.
ReadOnly attribute 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 --install process. By default only services with an "auto"
StartType are started immediately.
Startup() function is called, $Config{StartType} is now filled
in correctly.
--singleton option 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.
--nogui option 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.
--icon option 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::Parser module loads the utf8 module 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.
perlsvc instead of the
perltray command in the build.bat file. This has been fixed.
--add utf8 command-line
option on Perl 5.8. Now PerlTray automatically recognizes that XML::Parser
needs the utf8 module 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::VERSION or
PerlNET::exe().
plc command would always overwrite an already existing
output file. In PDK 5.0, you need to specify the --force option.
$0 now contains the command-line command that started the
application. Use PerlNET::exe() to determine the fully qualified path.
Win32::ODBC
or Win32::OLE.
Sleep(DELAY) method suspends the service for DELAY seconds, but
returns early if the service receives a PAUSE, STOP or SHUTDOWN
command. The ContinueRun() function now takes an optional DELAY argument
to suspend execution for DELAY seconds, 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
--help options.
$PerlSvc::Name and $PerlSvc::DisplayName globally, the
service can now also set up the %PerlSvc::Config hash inside the
Install() and Remove() callbacks. The %Config hash supports additional
options, like Parameters and 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.
--freestanding applications. Now they are added in --dependent
applications as well.
--clean was 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
SetDualVar module is only a warning when requested by Win32::TieRegistry.
--bind option 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.
--gui and --help options now work even if Perl is installed in a path
containing spaces.
--icon would only work with small icon files. Bigger icons (and version
resource information) could render the executable unusable. This has been
fixed.
--help improvements:
perlapp --help bind perlapp --help ENVIRONMENT
--info required 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.
--lib now automatically adds version-specifc and architecture-specific
subdirectories, just like PERL5LIB.
--script option is now supported for backwards compatibility with PDK
3.0
--trim option 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.
--debug option 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::BUILD variable 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, RegisterServer and
UnregisterServer.
RegisterServer callback.
%TypeLib elements. Better error checking
for %TypeLib hash.
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');
--freestanding assemblies still needed --add overload. This has been
fixed.
$this and a $self argument.
PerlNET::get() and PerlNET::set() helper functions to access static
fields and properties have been documented.
$PerlSvc::Name to the actual service name
before calling PerlSvc::Startup().
--explain option provides information about why a module is being
included by PerlApp.
--noglob and --noerrno Linux and Solaris options have been replaced
by the generalized --trim option.
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
--bind option 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)).
--add option works differently for
dependent executables. Please check the documentation of the --add,
--lib, --blib, --trim and --explain options.
--dependent option switches to non-freestanding mode. The old
abbreviation -f is 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_OPT and PERLCTRL_OPT.
--report option no longer exists.
--clean option). There is a new
--tmpdir option 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::RegisterServer or
PerlCtrl::UnregisterServer functions 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.
FailIfProductsFound and WarnIfProductsFound.
File::Glob module.
-d switch to PerlApp, etc).
CGI, LWP, MLDBM,
Net::FTP or URI. Tk widgets still need to be explicitly added using
--add if 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.
-e
switch.
fork() support in PerlApp and PerlSvc. The limitations of the
fork() emulation outlined in Perl's standard perlfork documentation page
apply here too.
--xclude option 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.
--bind option 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::Glob extension.
HTTPS_* environment variables.
--clean option 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 --clean option.
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.
--clean option 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 --clean option.
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.
--gui option.
--info option, which allows you set the version information of the
resulting DLL file. See the documentation for information regarding which
values may be set.
--info option, which allows you set the version information of the
resulting EXE file. See the documentation for information regarding which
values may be set.
--clean option, which deletes the freestanding file cache when the
PerlCtrl DLL file is unloaded.
--clean option, 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.
zlib in 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::Copy
in PerlScript and Perl for ISAPI.
--add <list> option to force inclusion of a list of modules separated
with semicolons.
--gui option 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
-drb command-line option (for building DCOM registration binaries) has been
changed to -rb
ReadOnly property 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.
AdminMisc
module.This has been fixed.
TestRe.doc example 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::Find now 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.