I've had a similar problem with wperl (I think it has nothing to do with ActiveState - it fails on Strawberry as well). In my particular case it was an Open2 call that hanged wperl.
The workaround was to create a script which does nothing else but launches perl.exe without a window through create process with creation flag 'CREATE_NO_WINDOW'. You run this script via wperl.exe instead of your original prog.
Mine is a Win32 solution: I don't know whether any similar thing works on Unix/Linux or not.
The launching script:
se Win32::Process;
Win32::Process::Create($perl,'c:\strawberry\perl\bin\perl.exe','perl.e
+xe my_original_prog.pl',0,CREATE_NO_WINDOW,'.');
The only modification to the original program itself that you include the following lines:
use Win32 qw(SW_HIDE);
Win32::SetChildShowWindow(SW_HIDE);
From here on no window is created (not even for child processes opened with Open2) and the main program is safe since it is run via perl.exe.