in reply to More on Win32::Process not waiting
FYI, the following syntax:
$::mainwin = MainWindow->new (-background => '#b5bfcc');
... which is liberally peppered throughout your code is a great way to use global variables and get around the errors you'll encounter when running under use strict. You may want to instead declare your variables with my, i.e.
my $mainwin = MainWindow->new (-background => '#b5bfcc');
Regarding your waiting question, my assumption is that at the time your module PPSubs.pm is compiled, values like INFINITE and NORMAL_PRIORITY_CLASS (possibly among others) are undefined when you have the use PPSSubs.pm before the module(s) that define them, i.e. use Win32::Clipboard; and use Win32::Process;. One way around that is to put those two Win32 use lines inside your PPSSubs.pm module.
And the above anonymous monk is correct, use strict; and use warnings; in your module would help identify that issue.
s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; = qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)