#! perl -slw use strict; use threads; use threads::shared; my $sig :shared = 1; $SIG{'INT'} = sub{ print 'sigint'; $sig = 0; exit; }; my @threads = map{ async{ sleep 1 while $sig }; } 1 .. 4; sleep 1 while 1; END{ print 'joining...'; $_->join for @threads; print 'joined.'; } __END__ C:\test>junk39 sigint joining... joined.