perl 5.10 ActiveScript engine

2007-12-20 Thread Michael Ellery
..I just upgraded to 5.10 (uninstalled 5.8 and installed 5.10, actually)
and I can't seem to execute using the perl ActiveScript engine.  For
instance, I try this simple script:



  use strict;
  say "Hello World";



and try to run with cscript -- cscript crashes.

In our application, we also have a custom ActiveScript host (so we can
execute ActiveScript engines) and we can also no longer run using the
PerlScript engine.  We get an exception thrown from the InitNew method
on the IActiveScriptParse interface.  Is the activescript engine broken
in this release?

TIA,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: perl 5.10 ActiveScript engine

2008-01-03 Thread Michael Ellery
Jan Dubois wrote:
> On Thu, 20 Dec 2007, Michael Ellery wrote:
>> ..I just upgraded to 5.10 (uninstalled 5.8 and installed 5.10, actually)
>> and I can't seem to execute using the perl ActiveScript engine.  For
>> instance, I try this simple script:
>>
>> 
>> 
>>   use strict;
>>   say "Hello World";
>> 
>> 
>>
>> and try to run with cscript -- cscript crashes.
>>
>> In our application, we also have a custom ActiveScript host (so we can
>> execute ActiveScript engines) and we can also no longer run using the
>> PerlScript engine.  We get an exception thrown from the InitNew method
>> on the IActiveScriptParse interface.  Is the activescript engine broken
>> in this release?
> 
> Yes, it looks like it is broken. :(  The same issue probably afflicts
> PerlEx and Perl for ISAPI as well.
> 
> I'll see that we can get this fixed ASAP.
> 
> Cheers,
> -Jan
> 

Any estimate when we might see a fix for this issue?  Do you expect to
produce a new 5.10 build or just a patch to the current build?

Thanks,
Mike


___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Win32::OLE and VT_INT

2008-01-09 Thread Michael Ellery
just running some quick COM code in perl and I notice this: if I call a
property or method that returns VT_I4, Win32::OLE maps that to a perl
integer in scalar context.  When I call a property or method that
returns VT_INT, however, it gets mapped to a perl string.  Is this
deliberate? Is it correct behavior? I can work around my current issue
by just doing int() around my values, but it seemed strange to me that
these two cases produced slightly different scalars.

Thanks,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Win32::OLE and VT_INT

2008-01-09 Thread Michael Ellery
Jan Dubois wrote:
> On Wed, 09 Jan 2008, Michael Ellery wrote:
>> just running some quick COM code in perl and I notice this: if I call
>> a property or method that returns VT_I4, Win32::OLE maps that to a
>> perl integer in scalar context. When I call a property or method that
>> returns VT_INT, however, it gets mapped to a perl string. Is this
>> deliberate? Is it correct behavior? I can work around my current issue
>> by just doing int() around my values, but it seemed strange to me that
>> these two cases produced slightly different scalars.
> 
> It is a bug in Win32::OLE: it doesn't handle VT_INT (nor VT_UINT)
> explicitly and therefore tries to coerce it into VT_BSTR (using
> VariantChangeTypeEx) before turning it into a Perl scalar. At the Perl
> level this shouldn't really matter though, as strings are converted back
> to integers/numbers automatically whenever needed.
> 
> I don't know why it was never handled explicitly; I just checked, and
> even the wtypes.h from VC98 lists VT_INT as a valid type for a VARIANT.
> 
> I'll fix it in a future Win32::OLE release.
> 
> Cheers,
> -Jan

Jan,

Thanks for the quick response.  In my case, I only noticed the behavior
because I am passing the output to another property - and that property
put wasn't expecting a string.  It went something like this:

my $foo = $oleObject->Some_VT_INT_Property;
$oleObject->{Some_VARIANT_Property} = $foo;

The VT_TYPE coming into my put_Some_VARIANT_Property was actually
VT_BSTR in this case, which I was not expecting. Simply wrapping int()
around the get call works fine, but a fix to Win32::OLE would be great.
I think I'll also update my VARIANT processing on the put.

Thanks,
Mike


___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


properties, VT types, and Win32::OLE

2008-02-04 Thread Michael Ellery
Given some object and a property:

my $obj = new Win32::OLE("SOME.class");
my $val = $obj->{SomeProperty};

...is there some way to determine the VT type of $val (or of
SomeProperty, equivalently).  I often run into strange problems where I
expect a 32 bit negative value from some property, but when I simply
print it, perl shows it as a large positive value.  It is bit equivalent
to the expected negative value, but somehow not being interpreted with
the corrected sign-ed-ness.  The first thing I would like to check is
the VT type that Win32::OLE thought it got -- then I'll see if I agree
with how Win32::OLE is converting to perl scalars based on the VT type.

Advice appreciated.

-Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: properties, VT types, and Win32::OLE

2008-02-04 Thread Michael Ellery
Jan Dubois wrote:
> On Mon, 04 Feb 2008, Michael Ellery wrote:
>> Given some object and a property:
>>
>> my $obj = new Win32::OLE("SOME.class");
>> my $val = $obj->{SomeProperty};
>>
>> ...is there some way to determine the VT type of $val (or of
>> SomeProperty, equivalently). I often run into strange problems where I
>> expect a 32 bit negative value from some property, but when I simply
>> print it, perl shows it as a large positive value. It is bit
>> equivalent to the expected negative value, but somehow not being
>> interpreted with the corrected sign-ed-ness. The first thing I would
>> like to check is the VT type that Win32::OLE thought it got -- then
>> I'll see if I agree with how Win32::OLE is converting to perl scalars
>> based on the VT type.
> 
> I haven't tested this, but you should be able to do something like this:
> 
> my $prop = Win32::OLE::Variant->new();
> $obj->Dispatch('SomeProperty', $prop);
> print "V_VT(prop)=%d\n, $prop->Type);
> 

With two minor syntax fixes to the print line, this works great. Thanks!

-Mike

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Win32::OLE and hidden methods

2008-02-13 Thread Michael Ellery
Can Win32::OLE access methods/props marked as hidden in the IDL?  There
happens to be one property we have marked as such and I tried the naive
thing:

my $secret = $object->HiddenProperty

...and it was rejected.  Is there some way to ask Win32::OLE to ignore
the hidden attribute?

TIA,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


ppm repository for 5.10

2008-02-29 Thread Michael Ellery
Many thanks to the people at ActiveState for all the work in getting us
a release of 5.10.  I've been holding off on upgrading for the package
compatibility problem.  Is there now a complete ppm repository available
for 5.10? Are there any packages that were available in 5.8 that are no
longer available in 5.10?

Thanks,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: rsync for Win32

2008-03-10 Thread Michael Ellery
Sisyphus wrote:

> I couldn't find a Cygwin version of rsync under Cygwin's Setup.exe (though 
> it wouldn't surprise me if such a beast existred) and the 2 windows 
> executables that I've tried (rsync-wrap.exe and rsync.exe both croak on the 
> command).

I have a fairly recent install of Cygwin and it looks like there is an 
rsync:

$ which rsync
/usr/bin/rsync

..I have not used it, so I can't attest that it actually works.

--Mike

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Can a Perl script be called as a COM object?

2008-04-01 Thread Michael Ellery
Howard Maher wrote:
> One of our possible vendors said that if Perl scripts can be callable COM 
> objects, then we can interface with their engine.  Does anyone know whether 
> Perl scripts can be?  The languages that they suggest are VB6, C++, and 
> .NET...   The Perl.NET project has pretty much been scrapped, correct?  
> Thanks in advance for any help you can give us. 
>

try a web search for "Windows Script Components".  ActiveState perl 
works nicely as a scriplet engine.

--Mike Ellery


___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Win32::Process::Create

2008-04-28 Thread Michael Ellery
..I use this function pretty regularly to spawn procs on windows, but 
I've often wanted to minimize the console or main window that was 
launched.  Does anyone know how to do this?  In the corresponding WIN32 
API, there is a STARTUPINFO structure that allows this, but looks like 
it's not part of the Win32::Process API.  Advice appreciated.

-Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Win32::Process::Create

2008-04-28 Thread Michael Ellery
Sisyphus wrote:

> 
> What happens if you launch the script using the wperl executable instead 
> of the perl executable ?
> 

I don't even know what wperl is, although it does look like it's part of 
my current perl install (I have never heard of it before now). In any 
event, it's not an option for us since most of our stuff runs in the 
context of the perlSE.dll (ActiveScript engine).

> Have you checked the various flags constants ? From the docs:
> 
> --
> EXPORTS
>The following constants are exported by default:
> 
>CREATE_DEFAULT_ERROR_MODE

> --
> 
> I was thinking specifically of CREATE_NO_WINDOW constant (but perhaps 
> that does something else).
> 

I believe this corresponds to this process creation flag (from MSDN docs):


CREATE_NO_WINDOW
0x0800

The process is a console application that is being run without a console 
window. Therefore, the console handle for the application is not set.

This flag is ignored if the application is not a console application, or 
if it is used with either CREATE_NEW_CONSOLE or DETACHED_PROCESS.


I'm really looking for something that works more generally (for console 
and non-console apps alike).  In older versions of the win32 API, I'm 
pretty sure there was a field in the STARTUPINFO that allowed the caller 
to request the app be started mimimized, but the current docs don't show 
such an option.

Perhaps my best bet it to try to call ShowWindow directly ??




___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Win32::Process::Create

2008-04-29 Thread Michael Ellery
Jan Dubois wrote:

> 
> If you need to wait for your subprocesses, then you may want
> to use this somewhat obscure form:
> 
> my $pid = system(1, $cmdline);
> # ...
> waitpid $pid, 0;
> 
> (This is documented in `perldoc perlport` as a Win32 specific extension
> to system(), but not mentioned in `perldoc -f system`).
> 

okay - thanks to everyone for the advice.  I never knew this 
"non-blocking" version of system() existed - very interesting.  Based on 
my quick tests, it looks like this version might still use the shell 
(although I can't tell).  For instance, I wasn't able to start a cmd.exe 
instance to run a  batch file using system(1, ...) in my quick tests, 
but that might have been pilot error.  I'll give Win32::GUI::Show a shot 
- that might be my best option for now.

Thanks,
Mike


___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Win32::OLE -- assignment to property of type IUnknown..how?

2008-05-28 Thread Michael Ellery

I have a COM component with a property defined like this (IDL):

[propput, id(30), helpstring("property TestSuite")] HRESULT 
TestSuite([in] IUnknown *pVal);
[propget, id(30), helpstring("property TestSuite")] HRESULT 
TestSuite([out, retval] IUnknown **ppVal);

..basically it gets/sets a dual interface object that is implemented in 
a different COM component.

Using Win32::OLE, it doesn't let me do a normal property assignment -- 
i.e. this fails:

$myObj->{TestSuite} = $someOtherObj;

..however, it DOES let me do by ref assigment:

$myObj->LetProperty('TestSuite', $someOtherObj);

Can someone explain why?  I would prefer (for consistency with other 
properties) to use the SetProperty style of assignment instead of 
LetProperty - is there something I need to change in my IDL to make the 
SetProperty style work?

Thanks,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Win32::OLE -- assignment to property of type IUnknown..how?

2008-05-29 Thread Michael Ellery
Jan Dubois wrote:
> On Wed, 28 May 2008, Michael Ellery wrote:
>> I have a COM component with a property defined like this (IDL):
>>
>> [propput, id(30), helpstring("property TestSuite")] HRESULT
>> TestSuite([in] IUnknown *pVal);
> 
> Try adding a second line here:
> 
>   [propputref, id(30), helpstring("property TestSuite")] HRESULT
>   TestSuite([in] IUnknown *pVal);
> 
> (identical to the previous line, except propput => propputref).
> 
> Not sure if this is enough, but maybe it is sufficient to get the
> required IDispatch glue generated for you.
> 
> Cheers,
> -Jan


that seems to do the trick - thank you!

-Mike


___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


OLE Events and STDIN

2008-06-13 Thread Michael Ellery
Win32 Users,

I would like to accept OLE Events in my script - I've written working 
code that successfully receives events.  Now I want to also receive some 
console (stdin) input.  I typically use Term::Readline for this, 
although I'm happy to try something else.  The basic problem is that 
Win32:OLE MessageLoop() spins forever (or until QuitMessageLoop is 
called).  Is there any way I can do something else, like check for 
console input, when MessageLoop is running?  Or, perhaps I can do some 
kind of polling loop where I check for events, check for stdin input and 
then sleep briefly (I'm not sure if such a thing is possible).

TIA,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: OLE Events and STDIN

2008-06-13 Thread Michael Ellery
Jan Dubois wrote:

> 
> You may get something working by using Term::ReadKey::ReadKey() in
> non-blocking mode interleaved with calls to Win32::OLE->SpinMessageLoop().
> 

thanks for this advice -- I'm going to give Spin/ReadKey a try first. 
It has the undesirable polling loop aspect but i think it would actually 
be fine for my purposes.

> In general it would be better to provide a GUI for your input,
> using Tk, Tkx, Win32::GUI, wxPerl etc. which would avoid the problem
> altogether.
> 

It's been a long time since I've tried any GUI programming in perl, but 
IIRC usually there is a point where you have to call a message loop in 
order to allow the UI to process messages.  How would that work with 
with Win32::OLE's MessageLoop()?  Obviously I can't have two message 
loops going - would the UI message loop be sufficient to deliver my COM 
events (in other words, I'd never have to call OLE's MessageLoop)?


-Mike


___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Problem with Win32::ToolHelp module

2008-06-19 Thread Michael Ellery
apologies if this is not the right place for module specific 
questions...but here goes...

I'm running 5.8.8 and have had Win32::ToolHelp installed for some time. 
  Just recently, I started getting a failure when trying to use the 
package - specifically:

"Can't load 'C"/Perl/site/lib/auto/Win32/ToolHelp/TollHelp.dll for 
module Win32::ToolHelp: load_file: The specified module could not be 
found at C:/Perl/lib/DynaLoader.pm line 230"

I've looked on the filesystem, and ToolHelp.dll is there in the location 
mentioned.  I've even tried "ppm install --force Win32::ToolHelp" to see 
if that would fix it, but it hasn't.

Any idea what might be wrong and what else I could try to fix it?

TIA,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Problem with Win32::ToolHelp module

2008-06-19 Thread Michael Ellery
Stuart Arnold wrote:
> Did you copy/paste or type the error in? There seems to be a typo:
> "TollHelp.dll"
> ToolHelp/TollHelp.dll  
> 

typo -- sorry.  That is ToolHelp.dll.

Thanks,
Mike

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Problem with Win32::ToolHelp module

2008-06-19 Thread Michael Ellery
Michael Ellery wrote:
> apologies if this is not the right place for module specific 
> questions...but here goes...
> 
> I'm running 5.8.8 and have had Win32::ToolHelp installed for some time. 
>   Just recently, I started getting a failure when trying to use the 
> package - specifically:
> 
> "Can't load 'C"/Perl/site/lib/auto/Win32/ToolHelp/TollHelp.dll for 
> module Win32::ToolHelp: load_file: The specified module could not be 
> found at C:/Perl/lib/DynaLoader.pm line 230"
> 
> I've looked on the filesystem, and ToolHelp.dll is there in the location 
> mentioned.  I've even tried "ppm install --force Win32::ToolHelp" to see 
> if that would fix it, but it hasn't.
> 
> Any idea what might be wrong and what else I could try to fix it?
> 

after some investigation, it appears to be a case of installation of 5.8 
on top of 5.6 without cleanly reinstalling all packages. I generally 
only do clean installs, but I was dealing with an "inherited" system and 
wasn't as careful as I should have been.

Thanks,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


NET SSH2 ppm for 5.10

2008-09-24 Thread Michael Ellery
does anyone know of a source for a NET::SSH2 ppm for 5.10?  I managed to
get this from uwinnipeg for 5.8, but ppm is telling me it can't find it
in the 5.10 repository (now that I've upgraded).

Thanks,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: NET SSH2 ppm for 5.10

2008-09-25 Thread Michael Ellery
Serguei Trouchelle wrote:

> 
> Try this:
> 
> ppm install http://trouchelle.com/ppm10/Net-SSH2.ppd
> 

yes, indeed - that seems to have worked for me.  Thanks for that...and
to Rob for offering his own private build to me.

Regards,
Mike

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Win32::TieRegistry question

2008-09-26 Thread Michael Ellery
Win32-ers,

Does anyone know off-hand what TieRegistry should do with a statment
like this:

$Registry->{'LMachine/Software/Bar'} = {'SubKey/' => { '/SomeValue' => 1 }};

..specifically, with respect to the type of the SomeValue entry?  I had
thought that it would create a DWORD value since the value assigned is
integer, but based on a quick experiment, I seem to assume wrong (it
creates a REG_SZ).  Anyone have any insight into this?  What's the
"right" way to create/assign REG_SZ values?

Thanks,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Adding to the perl include search path

2008-12-02 Thread Michael Ellery
Win32 users:

What's the best way to add a new path to perl's @INC search path?  Our
product installs several perl modules and I would like to make those
modules available to all perl scripts without asking users to add the
'use lib "mypath"' business in every script. I'm only concerned with
windows (Activestate) perl at this point, but a solution that worked
generally would be fine too.

Thanks,
Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Win32::OLE and script components with perl 5.10

2009-01-05 Thread Michael Ellery
I've recently upgraded to activeperl 5.10 (looks like it's build 1004)
and I've just noticed that I can no longer instantiate my script
components (which are written in "PerlScript").  Specifically, the perl
interpreter process crashes.

So, wanting to eliminate my WSCs, I went back to basics and took the
canonical example in the docs
(http://docs.activestate.com/activeperl/5.10/Windows/WindowsScriptComponents.html):





description="Easy"
progid="Easy.WSC"
version="1.00"
classid="{74bb1ba9-2e69-4ad6-b02c-c52f3cbe153b}"












(NOTE - there is a error in the docs and the > for the registration open
tag has to be moved to AFTER the properties). Once I do this, register
the component and then try to run the following script:

use strict;
use warnings;
use Win32::OLE;
Win32::OLE->Option(Warn => 3);
my $r = new Win32::OLE('Easy.WSC');
print "hello, world\n";

...I still get a crash. Has anyone else had luck instantiating WSCs with
Win32::OLE in perl 5.10?

Thanks,
Mike Ellery




___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Net::XMPP

2009-01-22 Thread Michael Ellery

Just curious if anyone out there has experience getting Net::XMPP to
work with perl 5.8.x on windows?  I did manage to get it installed (via
ppm), but I'm encountering some runtime errors that make me think more
packages are required (it seems to be complaining about
Authen::SASL::Cyrus at the moment, which I can't find in any repos). Any
advice appreciated.

-Mike Ellery

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Can I 'yield' to the system?

2009-12-03 Thread Michael Ellery
Barry Brevik wrote:
> Re: Active Perl 5.8.8 running on Windows.
> 
> Back when I was doing some Assembly language programming, there was a
> system call to "yield" to the Windows operating system, in other words,
> give up the rest of your time slice.
> 
> Is there a way to do this with Perl? I'm writing an app that
> continuously loops waiting for something to do, and it would be good to
> give control back to the OS when idle. There is Win32::GUI::DoEvents(),
> but I am unsure if this really does the same thing.
> 

how about sleep ... or usleep (provided by Time::HiRes) ?

-Mike
___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: WIN32::OLE WMI Out params

2009-12-04 Thread Michael Ellery
I haven't followed your thread closely, but it seems like the relevant
bits from your first link are these:

my $objSecDescriptor = Win32::OLE::Variant-> new (VT_DISPATCH|VT_BYREF);
my $retval =
$objDirectorySecSetting->GetSecurityDescriptor($objSecDescriptor);

..which seems to be filling the $objSecDescriptor with an out param.

If your out param is an array, you might need to add VT_ARRAY to the
variant flags when you create it. Does something like that work for you ?

-Mike

Michael wrote:
> Hi Steven,
> 
> Well I tried your suggestion and I think that the Win32::OLE::Variant
> module might be the solution, as I have found some other examples where WMI
> [out] and variants are used.
> 
> http://www.infoqu.com/dev/perl-programming/using-perl-with-wmi-to-set-folder-level-permissions-16930-1/
> http://www.perlmonks.org/?node_id=325823
> 
> However I'm in way over my head here, so unless someone could cut it out in
> pieces , I don't think that 
> I'll get any further.
> 
> /Michael
> 
> 
> On Fri, 4 Dec 2009 02:12:03 -0700, "Steven Manross" 
> wrote:
>> Below...
>>
>>> -Original Message-
>>> From: perl-win32-users-boun...@listserv.activestate.com 
>>> [mailto:perl-win32-users-boun...@listserv.activestate.com] On 
>>> Behalf Of Michael
>>> Sent: Thursday, December 03, 2009 6:45 AM
>>> To: perl-win32-users@listserv.ActiveState.com
>>> Subject: RE: WIN32::OLE WMI Out params
>>>
 When troubleshooting OLE issues, it is best to have the 
>>> following code 
 after each OLE command...

 If (Win32::OLE-> LastError() != 0) {
   print "error calling blah: " . Win32::OLE-> LastError() . "\n";
   exit 0;
 }

 ...Or something similar, so you can see what OLE had issues 
>>> with (if 
 anything).  It might lead you in a direction that fixes it.

 Steven
>>> Added to the script, but no issues reported.
>>>
>>> /Michael
>> Well, then my next guess is the use of the Variant module (because no
>> error is thrown from OLE).
>>
>> Some OLE calls require to be cast of a certain type before they work.
>>
>> use Win32::OLE::Variant;
>>
>> my $nodes = Variant(VT_ARRAY|VT_VARIANT, 0); 
>>
>> #I might also try VT_VARIANT or VT_ARRAY|VT_BSTR instead of
>> VT_ARRAY|VT_VARIANT
>>
>> #then
>> my $objChildGroups = $objGetRoot->GetChildNodeGroups($nodes, TRUE); 
>>
>> Play around with this...  I'm not the greatest Variant script writer
>> here, to know exactly which combination will work (if this is it) based
>> on the object type as I've only run into this a few times before, but
>> you can get examples from your perl install here (depending on your perl
>> build version) of similar options to try and all the VT_* types:
>>
>> C:\Perl\html\lib\Win32\OLE\Variant.html
>>
>> HTH
>>
>> P.S. I googled OV_NodeGroup and found someone else with your same
>> problem on an HP board (or so it seems).  :(
>>
>> Steven
>>
>>> ___
>>> Perl-Win32-Users mailing list
>>> Perl-Win32-Users@listserv.ActiveState.com
>>> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>>>
> ___
> Perl-Win32-Users mailing list
> Perl-Win32-Users@listserv.ActiveState.com
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> 

___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: WIN32::OLE WMI Out params

2009-12-04 Thread Michael Ellery
Michael wrote:
> Okay - Just to sum up the whole thing.
> 
> The original VBScript < 
> Option Explicit
> 
> Dim objWMIService, objOV_NodeGroup, objGetRoot, objChildGroups, arrNodes,
> objItem
> 
> Set objWMIService = GetObject("winmgmts:root\HewlettPackard\OpenView\data")
> 
> Set objOV_NodeGroup = objWMIService.Get("OV_NodeGroup")
> Set objGetRoot = objOV_NodeGroup.GetRoot()
> objChildGroups = objGetRoot.GetChildNodeGroups(arrNodes, True)
> 
> WScript.Echo "Child Group Count: " & objChildGroups & vbCrLF
> 
> For Each objItem In arrNodes
>   WScript.Echo "Name: " & objItem.Name
> Next
> EOF
> 
> Returns the following:
> 
> Child Group Count: 25
> 
> Name: {36716FD8-E600-46FB-90CA-1263E0C62509}
> Name: {38FF8E8E-2DDC-4895-A7EB-0DC7DF50EC25}
> Name: {3E575181-0225-4553-9722-46F841B9FA76}
> Name: {8A412133-F571-42BC-8A66-4B242EB3BAC4}
> Name: {E14D965C-1FBB-40EC-A784-5F9F39F82281}
> Name: OpenView_AIX
> Name: OpenView_External
> Name: OpenView_HPUX
> Name: OpenView_Linux
> Name: OpenView_NNM
> Name: OpenView_OpenVMS
> Name: OpenView_OpenVMS(itanium)
> Name: OpenView_SNMP
> Name: OpenView_Solaris
> Name: OpenView_Tru64
> Name: OpenView_Unknown
> Name: OpenView_Windows2000
> Name: OpenView_WindowsNT
> Name: OpenView_WindowsServer2003
> Name: OpenView_WindowsServer2008
> Name: OpenView_WindowsVista
> Name: OpenView_WindowsXP
> Name: Root_Special
> Name: Root_Unix
> Name: Root_Windows
> 
> And the Perl-Script with the modification < #!perl
> use strict;
> use warnings;
> use Win32::OLE qw(in with);
> use Win32::OLE::Variant;
> use Data::Dumper;
> 
> my $objWMIService =
> Win32::OLE->GetObject("winmgmts:root/HewlettPackard/OpenView/data") or die
> "WMI connection failed.\n";
> if (Win32::OLE-> LastError() != 0) {
>   print "Error calling GetObject: " . Win32::OLE->LastError() . "\n";
> exit 0;
> }
> 
> my $objOV_NodeGroup = $objWMIService->Get("OV_NodeGroup");
> if (Win32::OLE-> LastError() != 0) {
>   print "Error calling Get: " . Win32::OLE->LastError() . "\n";
> exit 0;
> }
> 
> my $objGetRoot = $objOV_NodeGroup->GetRoot();
> if (Win32::OLE-> LastError() != 0) {
>   print "Error calling GetRoot: " . Win32::OLE->LastError() . "\n";
> exit 0;
> }
> 
> my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT, 0);
> #my $nodes = Win32::OLE::Variant->new(VT_VARIANT|VT_BYREF);
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_BSTR, 0);
> #my $nodes = Win32::OLE::Variant->new(VT_DISPATCH|VT_BYREF);
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT|VT_BYREF, 0);
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_BSTR|VT_BYREF, 0);
> #my $nodes = Win32::OLE::Variant->new(VT_VARIANT|VT_BYREF);
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT|VT_BYREF, 0);
> 
> my $objChildGroups = $objGetRoot->GetChildNodeGroups($nodes, "True");
> if (Win32::OLE-> LastError() != 0) {
>   print "Error calling GetChildNodeGroups: " . Win32::OLE->LastError() .
> "\n";
> exit 0;
> }
> print "Child Group Count: " . $objChildGroups . "\n";
> 
> print Dumper($nodes);
> 
> 
> foreach my $objItem (in $nodes) {
> print 'Name: ' . $objItem->{Name} . "\n";
> }
> 
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT, 0); Returns
> ##Child Group Count: 25
> ##$VAR1 = bless( do{\(my $o = 27197068)}, 'Win32::OLE::Variant' );
> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
> 
> #my $nodes = Win32::OLE::Variant->new(VT_VARIANT|VT_BYREF); Returns
> ##Child Group Count: 25
> ##$VAR1 = bless( do{\(my $o = 27197828)}, 'Win32::OLE::Variant' );
> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
> 
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_BSTR, 0); Returns
> ##Child Group Count: 25
> ##$VAR1 = bless( do{\(my $o = 27198308)}, 'Win32::OLE::Variant' );
> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
> 
> #my $nodes = Win32::OLE::Variant->new(VT_DISPATCH|VT_BYREF); Returns
> ##Error calling GetChildNodeGroups: Win32::OLE(0.1709) error 0x80010105:
> "The server threw an exception"
> ##in METHOD/PROPERTYGET "GetChildNodeGroups"
> 
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT|VT_BYREF, 0);
> Returns
> ##Child Group Count: 25
> ##$VAR1 = bless( do{\(my $o = 27199076)}, 'Win32::OLE::Variant' );
> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
> 
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_BSTR|VT_BYREF, 0);
> Returns
> ##Child Group Count: 25
> ##$VAR1 = bless( do{\(my $o = 27197684)}, 'Win32::OLE::Variant' );
> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
> 
> #my $nodes = Win32::OLE::Variant->new(VT_VARIANT|VT_BYREF); Returns
> ##Child Group Count: 25
> ##$VAR1 = bless( do{\(my $o = 27199620)}, 'Win32::OLE::Variant' );
> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
> 
> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT|VT_BYREF, 0);
> Returns
> ##Child Group Count: 25
> ##$VAR1 = bless( do{\(my $o = 27199524)}, 'Win32::OLE::Variant' );
> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
> 
> Does any of

Re: WIN32::OLE WMI Out params

2009-12-05 Thread Michael Ellery
Michael wrote:
> On Fri, 04 Dec 2009 17:10:26 -0800, Michael Ellery
>  wrote:
>> Michael wrote:
>>> Okay - Just to sum up the whole thing.
>>>
>>> The original VBScript <>>
>>> Option Explicit
>>>
>>> Dim objWMIService, objOV_NodeGroup, objGetRoot, objChildGroups,
> arrNodes,
>>> objItem
>>>
>>> Set objWMIService =
>>> GetObject("winmgmts:root\HewlettPackard\OpenView\data")
>>>
>>> Set objOV_NodeGroup = objWMIService.Get("OV_NodeGroup")
>>> Set objGetRoot = objOV_NodeGroup.GetRoot()
>>> objChildGroups = objGetRoot.GetChildNodeGroups(arrNodes, True)
>>>
>>> WScript.Echo "Child Group Count: " & objChildGroups & vbCrLF
>>>
>>> For Each objItem In arrNodes
>>>   WScript.Echo "Name: " & objItem.Name
>>> Next
>>> EOF
>>>
>>> Returns the following:
>>>
>>> Child Group Count: 25
>>>
>>> Name: {36716FD8-E600-46FB-90CA-1263E0C62509}
>>> Name: {38FF8E8E-2DDC-4895-A7EB-0DC7DF50EC25}
>>> Name: {3E575181-0225-4553-9722-46F841B9FA76}
>>> Name: {8A412133-F571-42BC-8A66-4B242EB3BAC4}
>>> Name: {E14D965C-1FBB-40EC-A784-5F9F39F82281}
>>> Name: OpenView_AIX
>>> Name: OpenView_External
>>> Name: OpenView_HPUX
>>> Name: OpenView_Linux
>>> Name: OpenView_NNM
>>> Name: OpenView_OpenVMS
>>> Name: OpenView_OpenVMS(itanium)
>>> Name: OpenView_SNMP
>>> Name: OpenView_Solaris
>>> Name: OpenView_Tru64
>>> Name: OpenView_Unknown
>>> Name: OpenView_Windows2000
>>> Name: OpenView_WindowsNT
>>> Name: OpenView_WindowsServer2003
>>> Name: OpenView_WindowsServer2008
>>> Name: OpenView_WindowsVista
>>> Name: OpenView_WindowsXP
>>> Name: Root_Special
>>> Name: Root_Unix
>>> Name: Root_Windows
>>>
>>> And the Perl-Script with the modification <>> #!perl
>>> use strict;
>>> use warnings;
>>> use Win32::OLE qw(in with);
>>> use Win32::OLE::Variant;
>>> use Data::Dumper;
>>>
>>> my $objWMIService =
>>> Win32::OLE->GetObject("winmgmts:root/HewlettPackard/OpenView/data") or
>>> die
>>> "WMI connection failed.\n";
>>> if (Win32::OLE-> LastError() != 0) {
>>> print "Error calling GetObject: " . Win32::OLE->LastError() . "\n";
>>> exit 0;
>>> }
>>>
>>> my $objOV_NodeGroup = $objWMIService->Get("OV_NodeGroup");
>>> if (Win32::OLE-> LastError() != 0) {
>>> print "Error calling Get: " . Win32::OLE->LastError() . "\n";
>>> exit 0;
>>> }
>>>
>>> my $objGetRoot = $objOV_NodeGroup->GetRoot();
>>> if (Win32::OLE-> LastError() != 0) {
>>> print "Error calling GetRoot: " . Win32::OLE->LastError() . "\n";
>>> exit 0;
>>> }
>>>
>>> my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT, 0);
>>> #my $nodes = Win32::OLE::Variant->new(VT_VARIANT|VT_BYREF);
>>> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_BSTR, 0);
>>> #my $nodes = Win32::OLE::Variant->new(VT_DISPATCH|VT_BYREF);
>>> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT|VT_BYREF, 0);
>>> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_BSTR|VT_BYREF, 0);
>>> #my $nodes = Win32::OLE::Variant->new(VT_VARIANT|VT_BYREF);
>>> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT|VT_BYREF, 0);
>>>
>>> my $objChildGroups = $objGetRoot->GetChildNodeGroups($nodes, "True");
>>> if (Win32::OLE-> LastError() != 0) {
>>> print "Error calling GetChildNodeGroups: " . Win32::OLE->LastError() .
>>> "\n";
>>> exit 0;
>>> }
>>> print "Child Group Count: " . $objChildGroups . "\n";
>>>
>>> print Dumper($nodes);
>>>
>>>
>>> foreach my $objItem (in $nodes) {
>>> print 'Name: ' . $objItem->{Name} . "\n";
>>> }
>>>
>>> #my $nodes = Win32::OLE::Variant->new(VT_ARRAY|VT_VARIANT, 0); Returns
>>> ##Child Group Count: 25
>>> ##$VAR1 = bless( do{\(my $o = 27197068)}, 'Win32::OLE::Variant' );
>>> ##Not a HASH reference at GetChildNodeGroups.pl line 46.
>>>
>>> #my $nodes = Win32::OLE::Variant->new(VT

Help with slow startup

2010-01-18 Thread Michael Ellery
I have a slow startup problem with a library I have written. The 
observed behavior is that perl scripts that use my library 
*intermittently* take 30 seconds to startup. If I run them again 
immediately thereafter, they drop back down to about 10 seconds to 
startup. If I wait for some time (several hours, perhaps, although I'm 
not sure what the trigger is), then the script will exhibit slow startup 
again for the first execution and behave normally thereafter. Rebooting 
also causes the problem to reappear.

I'm using Win32::OLE quite extensively to interact with several of our 
COM objects - and I even have some COM calls in one of by BEGIN blocks. 
All of this works fine, with the exception of this intermittent startup lag.

I have trouble reproducing the problem, so I even have trouble 
diagnosing it further (using process explorer, etc). Does anyone have 
any suggestion or advice for what might be going on and how to track it 
down?  I'm wondering if there is some caching of COM objects going on 
perhaps that could be going on?

I'm running on Windows XP 32 bit (perhaps that matters, I don't know).

I've tried running with -dprof and here's what it shows for the first 
and second runs:

FIRST RUN:
Total Elapsed Time = 37.44117 Seconds
   User+System Time = 2.947177 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
  70.8   2.087  2.079   1730   0.0012 0.0012  Win32::OLE::Dispatch
  9.03   0.266  0.421  2   0.1329 0.2103  Win32::OLE::Const::_Typelibs
  5.26   0.155  0.155744   0.0002 0.0002  Win32::OLE::Const::_Typelib
  3.19   0.094  0.714 39   0.0024 0.0183  STRIDE::Test::BEGIN
  1.56   0.046  0.759  4   0.0115 0.1899  main::BEGIN
  1.53   0.045  0.041796   0.0001 0.0001  Win32::OLE::DESTROY
  1.36   0.040  1.053   1729   0. 0.0006  Win32::OLE::AUTOLOAD
  1.09   0.032  0.032  2   0.0160 0.0160  Win32::OLE::new
  1.05   0.031  0.031  5   0.0062 0.0062  Devel::Symdump::_symdump
  1.05   0.031  0.031  4   0.0077 0.0077  Config::BEGIN
  1.05   0.031  0.045  8   0.0039 0.0057  Pod::POM::BEGIN
  0.54   0.016  0.016  1   0.0160 0.0160  Win32::OLE::Uninitialize
  0.54   0.016  0.016  1   0.0160 0.0160  Devel::Symdump::_partdump
  0.54   0.016  0.016  5   0.0032 0.0032  File::Basename::BEGIN
  0.54   0.016  0.016  6   0.0027 0.0027  Text::Wrap::BEGIN

SECOND RUN:
Total Elapsed Time = 10.91888 Seconds
   User+System Time = 2.918880 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
  75.3   2.200  2.238   1730   0.0013 0.0013  Win32::OLE::Dispatch
  10.1   0.295  0.419  2   0.1474 0.2094  Win32::OLE::Const::_Typelibs
  4.25   0.124  0.124744   0.0002 0.0002  Win32::OLE::Const::_Typelib
  2.19   0.064  0.590 39   0.0016 0.0151  STRIDE::Test::BEGIN
  1.61   0.047  0.047  5   0.0094 0.0094  Devel::Symdump::_symdump
  1.30   0.038  0.035   2536   0. 0.  Win32::OLE::Tie::FETCH
  0.55   0.016  0.016  1   0.0160 0.0159  ActivePerl::Config::override
  0.55   0.016  0.016  3   0.0053 0.0053  DynaLoader::BEGIN
  0.55   0.016  0.016  5   0.0032 0.0032  Pod::POM::View::HTML::BEGIN
  0.55   0.016  0.016  7   0.0023 0.0023  IO::Handle::BEGIN
  0.55   0.016  0.636  4   0.0040 0.1589  main::BEGIN
  0.55   0.016  0.015  8   0.0020 0.0019  Pod::POM::BEGIN
  0.55   0.016  0.027 30   0.0005 0.0009  STRIDE::Test::AddAnnotation
  0.55   0.016  0.016 42   0.0004 0.0004  Pod::POM::Node::new
  0.51   0.015  0.015414   0. 0.  Pod::POM::Node::AUTOLOAD


So, clearly it's showing the discrepancy in total time, but nothing 
stands out as far as the code that is profiled by dprof.

Any advice about other things I should try?

Thanks,
Mike Ellery
___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Re: Help with slow startup

2010-01-18 Thread Michael Ellery
On 1/18/2010 4:52 PM, Jan Dubois wrote:
> On Mon, 18 Jan 2010, Michael Ellery wrote:
>>
>> I have a slow startup problem with a library I have written. The
>> observed behavior is that perl scripts that use my library
>> *intermittently* take 30 seconds to startup. If I run them again
>> immediately thereafter, they drop back down to about 10 seconds to
>> startup. If I wait for some time (several hours, perhaps, although I'm
>> not sure what the trigger is), then the script will exhibit slow startup
>> again for the first execution and behave normally thereafter. Rebooting
>> also causes the problem to reappear.
>
> Please try this patch to Win32::OLE::Const:
>
> http://code.google.com/p/libwin32/source/diff?spec=svn465&r=465&format=side&path=/trunk/Win32-OLE/lib/Win32/OLE/Const.pm
>
> It specifically deals with some slowness in Win32::OLE::Const that
> _may_ be the problem you are seeing.
>
> I guess I should make a Win32::OLE CPAN release to get this change
> out to the rest of the world.  So please confirm if this solves
> your problem!
>
> Cheers,
> -Jan
>
>

Jan,

Thanks for that patch. I've patched the file on my system and rebooted - 
now I see times shown below. Now my first startup time is only double my 
"steady state" time, which seems to be an improvement (previous run was 
more than 3 times the subsequent time). However, since the patch appears 
in a .pm file, shouldn't this change have an impact *every time* the 
script is executed, or is this code only loaded under certain conditions?

Thanks,
Mike


C:\s2>dprofpp tmon_FIRST.out
Total Elapsed Time = 20.19217 Seconds
   User+System Time = 2.898179 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
  75.2   2.181  2.173   1730   0.0013 0.0013  Win32::OLE::Dispatch
  8.11   0.235  0.326  2   0.1174 0.1628  Win32::OLE::Const::_Typelibs
  3.14   0.091  0.091744   0.0001 0.0001  Win32::OLE::Const::_Typelib
  2.69   0.078  0.450 23   0.0034 0.0196  STRIDE::BEGIN
  1.55   0.045  0.041796   0.0001 0.0001  Win32::OLE::DESTROY
  1.38   0.040  1.133   1729   0. 0.0007  Win32::OLE::AUTOLOAD
  1.10   0.032  0.032  2   0.0160 0.0160  Win32::OLE::new
  1.07   0.031  0.031  5   0.0062 0.0062  Devel::Symdump::_symdump
  1.07   0.031  0.541 39   0.0008 0.0139  STRIDE::Test::BEGIN
  0.55   0.016  0.016  1   0.0160 0.0160  Win32::OLE::bootstrap
  0.55   0.016  0.031  2   0.0080 0.0153  Pod::POM::parse_file
  0.55   0.016  0.016  8   0.0020 0.0020  DynaLoader::dl_load_file
  0.55   0.016  0.016  4   0.0040 0.0040  Config::BEGIN
  0.55   0.016  0.016 15   0.0011 0.0011  STRIDE::Test::MethodInfo::new
  0.55   0.016  0.016  5   0.0032 0.0032  Pod::POM::View::HTML::BEGIN

C:\s2>dprofpp tmon_SECOND.out
Total Elapsed Time = 10.09317 Seconds
   User+System Time = 2.742174 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
  74.9   2.056  2.064   1730   0.0012 0.0012  Win32::OLE::Dispatch
  9.63   0.264  0.342  2   0.1319 0.1708  Win32::OLE::Const::_Typelibs
  2.84   0.078  0.078744   0.0001 0.0001  Win32::OLE::Const::_Typelib
  1.71   0.047  0.047  5   0.0094 0.0094  Devel::Symdump::_symdump
  1.68   0.046  0.419 23   0.0020 0.0182  STRIDE::BEGIN
  1.42   0.039  1.039   1729   0. 0.0006  Win32::OLE::AUTOLOAD
  1.17   0.032  0.527 39   0.0008 0.0135  STRIDE::Test::BEGIN
  1.13   0.031  0.031269   0.0001 0.0001  Win32::OLE::Tie::Store
  0.58   0.016  0.016  2   0.0080 0.0080  Win32::OLE::new
  0.58   0.016  0.016  1   0.0160 0.0159  ActivePerl::Config::override
  0.58   0.016  0.031  5   0.0032 0.0061  Storable::BEGIN
  0.58   0.016  0.032  5   0.0032 0.0064  Win32::OLE::BEGIN
  0.58   0.016  0.557  4   0.0040 0.1394  main::BEGIN
  0.58   0.016  0.016 14   0.0011 0.0011 
STRIDE::Function::_perlFromPayload
  0.58   0.016  0.016 20   0.0008 0.0008  STRIDE::TestPoint::BEGIN

C:\s2>dprofpp tmon_THIRD.out
Total Elapsed Time = 10.09317 Seconds
   User+System Time = 2.775174 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
  77.0   2.137  2.129   1730   0.0012 0.0012  Win32::OLE::Dispatch
  8.94   0.248  0.326  2   0.1239 0.1628  Win32::OLE::Const::_Typelibs
  2.81   0.078  0.078744   0.0001 0.0001  Win32::OLE::Const::_Typelib
  1.73   0.048  0.403 23   0.0021 0.0175  STRIDE::BEGIN
  1.69   0.047  0.047  5   0.0094 0.0094  Devel::Symdump::_symdump
  1.69   0.047  0.511 39   0.0012 0.0131  STRIDE::Test::BEGIN
  1.12   0.031  0.031  2   0.0155 0.0155  Win32::OLE::new
  1.01   0.028  0.963  3   0.0094 0.3209  STRIDE::TestPoint::Wait
  0.58   0.016  0.016  3   0.0053 0.0053  B::BEGIN
  0.58   0.016  0.016  5   0.0032 0.0032  base::BEGIN
  0.58   0.016  0.016  4   0.0040 0.0040  Pod::POM::Nodes::BEGIN
  0.58  

Re: Help with slow startup

2010-01-19 Thread Michael Ellery
On 1/19/2010 4:17 PM, Jan Dubois wrote:
> On Mon, 18 Jan 2010, Michael Ellery wrote:
>>
>> Thanks for that patch. I've patched the file on my system and rebooted -
>> now I see times shown below. Now my first startup time is only double my
>> "steady state" time, which seems to be an improvement (previous run was
>> more than 3 times the subsequent time). However, since the patch appears
>> in a .pm file, shouldn't this change have an impact *every time* the
>> script is executed, or is this code only loaded under certain conditions?
>
> I suspect that there is some OS level caching going on.  I think some of
> the type libraries installed on your machine are stored on a network drive
> and not on a local disk.
>
> I don't have time to work out right now if we need those file tests at all,
> but I have another idea that might speed up the code some more:  In front
> of the line that you modified with the patch insert the following line:
>
>  local ${^WIN32_SLOPPY_STAT} = 1;
>
> Please let me know if this has any effect on your startup time.
>
> Cheers,
> -Jan
>
>

Jan,

thanks again for these mysterious patches. Yes, this had a positive 
effect - now with this patch plus the previous patch in place, my first 
vs. subsequent run times are 15s vs 10s. This is a considerable 
improvement over the 30s vs 10s that I was previously seeing.

Can you shed a little light on what this WIN32_SLOPPY_STAT does - I'm 
guessing it uses a faster set of APIs for gathering file stat info - 
perhaps at the cost of accuracy?

As for typelibrary location - all of my com objects and typelibs should 
be local (I build debug locally). The only thing I'm aware of that 
*could* be pulled from the network are the debug symbols from microsoft, 
which we store on a network share since they are rather large. This slow 
startup time is observed with release builds of our objects too (I have 
not yet tried your patches with a release build..), and those should 
have no network dependencies. Our com objects are all compiled code and 
the typelib info is built-in, so we don't ship separate typelib files (I 
don't know if that makes any difference here...)

Thanks again for your help.

-Mike
___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs


Syntax::Highlight::Perl PPM problem in 5.10 repo ?

2010-04-25 Thread Michael Ellery
I need to generate some HTML for some perl code, so I thought I would 
try Syntax::Highlight::Perl.  I used ppm to install it, but I was not 
able to use the module (not found). Upon further investigation, I found 
that only a Syntax::Highlight::Perl6 package was installed. When I do a 
search, here is what I see:

C:\Documents and Settings\mikee>ppm search syntax-highlight-perl

1: Syntax-Highlight-Perl
Perl 6 Syntax Highlighter
Version: 0.64
Released: 2009-06-25
Repo: ActiveState Package Repository

2: Syntax-Highlight-Perl-Improved
Highlighting of Perl Syntactical Structures
Version: 1.01
Released: 2004-05-04
Repo: ActiveState Package Repository

3: Syntax-Highlight-Perl6
Perl 6 Syntax Highlighter
Version: 0.80
Released: 2010-03-25
Repo: ActiveState Package Repository


..it's that first entry that seems to be causing me problems. Does 
anyone have advice about how to resolve this? Should I just install 
directly from CPAN?

Thanks,
Mike Ellery
___
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs