Andrew-

Many thanks for finding a workaround to this problem. As you demonstrate, if you specify to POE::Kernel which event loop to use (instead of letting it try to figure it out on it's own), then everything works just fine! I don't know why POE::Kernel chooses the incorrect one from the *.exe file, and the correct one from the *.pl file, however, this is how you can force it to use the right one.

-Craig

On Apr 22, 2009, at 12:52 PM, Andrew Feren wrote:

I don't use Tk, but I do use perlapp and POE. The attached script works compiled with perlapp and as a vanilla perl script. (By works I mean no more error messages when compiled. The script still doesn't *do* anything ;-)

The important magic seems to be

  use POE qw (Loop::TkActiveState);

without including TkActiveState when you use POE Loop::Select seems to be preferred.

The rest of the use statements are mostly to get perlapp to include modules without a bunch of --add arguments.

-Andrew

Craig Votava wrote:
Rocco-

Thank you very much for continuing to help me on this issue. Nobody else (activestate, perlmonks, netnews, etc) seems to be able to.

I started putting print statements in the POE kernel and various Loop modules to see the differences between running the *.pl and *.exe on Windows.

When running the *.pl I see POE::Loop::TkCommon -> POE::Loop::Tk -> POE::Loop::TkActiveState

When running the *.exe I see POE::Loop::Select

Obviously, POE::Kernel cannot seem to realize it needs Tk when running from the *.exe - I'm trying to figure out how that code works now.

Any hints or pointers are appreciated!

Thanks

-Craig

Reply via email to