http://www.perlmonks.org?node_id=820318

weismat has asked for the wisdom of the Perl Monks concerning the following question:

I am having trouble that my script should change a shared variable based on a signal. The signal is caught and the shared variable is changed, but the program does automatically stop. See below some a small piece of code as an example. I am using Perl 5.10.0 and CentOS 4.
use threads; use threads::shared; $SIG{'HUP'}='switchFlag'; $flag::shared; my $thr=threads->new(\&printer); $thr->detach(); sleep 10000; print "I am here\n"; exit; sub printer{ while(1) { sleep 1; print "Shared: $flag\n"; } } sub switchFlag{ $flag=!$flag; print "signal caught"; $SIG{'HUP'}='switchFlag'; }
Update: Same behaviour with Perl 5.8 under Solaris 10...