How to Use PerlCtrl
In my September column, "Inside the New Perl Resource Kit," I reviewed O'Reilly & Associates' Perl Resource KitWin32 Edition and introduced you to PerlCOM and PerlCtrl, the two new component object model (COM)-based Perl technologies ActiveState Tool developed. I demonstrated how you can use PerlCOM to create instances of Perl in any programming environment that supports COM. This month, I'll introduce you to PerlCtrl.
With PerlCtrl, you can create COM automation servers in Perl. A COM automation server, or control, is a self-contained, reusable .dll file that exposes methods and properties that any COM controller can instantiate and use. The control can be a simple Perl script that provides a useful function you want to reuse in another development environment or a complete Perl module that provides many useful functions. PerlCtrl lets you define all aspects of the object's implementation, including the ProgID (the name you use to create the object), the exposed methods and properties, and whether users can change exposed properties.
Creating a control with PerlCtrl involves six steps. I'll walk you through each step and show you how to build a control that lets you write events in the Windows NT Application Log. Keep in mind that after you're done, you can use this control from any programming environment that supports COM, such as Visual Basic (VB), Visual Basic for Applications (VBA), Windows Scripting Host (WSH), Active Server Pages (ASP), and Delphi. Because WSH doesn't provide access to the NT event logs by default, you'll test your new control with a WSH VBScript routine.
Step 1: Create a Template
You need to create a template for the control's source code and type library. This step is quick and easy because PerlCtrl.exe provides the -t command-line switch that instructs PerlCtrl to create the template for you. The only task you need to do is redirect the output to a file by typing
C:\Perl\Source\Controls>perlctrl -t >SysLog.pl
Executing PerlCtrl.exe produces a new control template, SysLog.pl, which Listing 1, page 194, shows. In this generic template, you'll find a hash, %TypeLib, enclosed in Perl documentation tags (=POD and =cut). In step 3, you'll use the %TypeLib hash to define the control's name, properties, methods, and other elements. But first you need to write the source code that implements this object's behavior.
Step 2: Write the Code
In this step, you need to add the Perl source code for your control to the template you just created (SysLog.pl in this case). As callout A in Listing 2, page 195, shows, you place the SysLog.pl source code in the template before the =POD delimiter of the %TypeLib hash.
The code begins by defining a new package, SysLog. Because you must define all code PerlCtrl exposes within a Perl package, you need to use Perl's package keyword followed by the package's name (i.e., SysLog). A Perl package is simply a named, modular unit of functionality constructed in a way that you can easily reuse it. For example, the hundreds of reusable Perl modules available on the Comprehensive Perl Archive Network (CPAN) are packages. (For more information about CPAN, go to http://www.perl.com/CPAN.)
After defining the package name, you must define the object's properties and methods. Properties define the state of the object; methods define the object's behavior. For example, consider a user object in which name might be a property and ChangePassword might be a method. Properties describe the current view of the object, and methods make changes or perform actions on the object in some way.
The control in the SysLog.pl source code in Listing 2 contains five scalar variables ($Host, $Source, $Id, $Type, and $Description) and one subroutine (Write) that make up the object's properties and method, respectively. The code initializes several of the scalar variables with a default value. Initialization provides a default value for the property in case the user chooses not to explicitly set the value. The Write subroutine is the object's only method. It performs the action of writing the default or user-defined event in the NT Application Log.
You can create an unlimited number of properties and methods. Also keep in mind that you do not need to expose all properties and methods.
Prev. page  
[1]
2
next page