On Thu, 22 Dec 2005, Samuel Meder wrote:
>
> I've written a fairly simple script that creates a few COM object
> handles and invokes methods on them (in my case related to managing
> Virtual Server). This looks something like:
>
> my $handle = $WScript->CreateObject("Foo.Application");
> my $resultingObject = $handle->method();
>
> Now, a call to "method" will sometimes result in a error and no object
> will be returned. In that case I can check if $resultingObject is
> undefined, but I've not been able to find any documentation about how
> to get to the error (which seems to end up in some global/ contextual
> object). So the questions I have are:
>
> * Can I get to this error using Win32::OLE->LastError(). Will that mix
> well with my perlscript use or should I just rewrite the whole thing
> using Win32::OLE calls?
You can just use Win32::OLE->LastError(). Your $handle variable above
is a Win32::OLE object.
> * Is the source for the perl <-> WSH glue code available somewhere? I
> downloaded the activatstate perl source dist and couldn't find it
> there.
The Perl <-> WSH glue is really just Win32::OLE under the covers. The
ActiveX Scripting interface for Perl (called "PerlScript") is just a thin
wrapper around normal Perl and uses Win32::OLE internally.
The ActivePerl sources only include the source for core Perl, not for any
additional tools like PerlScript, PerlIS, PerlEz or PerlEx.
> * Is there a better way to do this in perlscript? Is there another
> global variable I can just access? (similar to Err in VBScript).
You could use $Win32::OLE::LastError, which is the same as
Win32::OLE->LastError() as long as no subclassing of the module
is going on. You can do
*Err = \$Win32::OLE::LastError;
to use a $Err global in your code, or even better:
sub Err () { $Win32::OLE->LastError }
Cheers,
-Jan
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs