in reply to Kill a process in Perl

#! perl -slw use strict; use threads; use threads::shared; $|++; my $pid :shared; async { $pid = system 1, 'perl', q[-E"sleep 600; say 'Done!'"]; sleep 30; kill 2, $pid; undef $pid; }->detach; my $c = 0; ## get on with the rest of your program while( sleep 1 ) { print ++$c, ' Is it done yet?'; last unless $pid; } __END__ C:\test>\perl32\bin\perl.exe junk3.pl 1 Is it done yet? 2 Is it done yet? 3 Is it done yet? ... 27 Is it done yet? 28 Is it done yet? 29 Is it done yet? 30 Is it done yet? Terminating on signal SIGINT(2) 31 Is it done yet?

If you don't need to do anything else whilst you wait for it, then a simple:

#! perl -slw use strict; my $pid = system 1, 'perl', q[ -E"sleep 600; say 'Done!'"]; sleep 30; kill $pid, 2; ## rest of program

will do it.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP PCW