in reply to Interrupt Handling - What am I doing wrong?

#!/usr/bin/perl use strict; use warnings; my $in_critical = 0; my $interrupt = 0; $SIG{'INT' } = \&interrupt; $SIG{'QUIT'} = \&interrupt; $SIG{'HUP' } = \&interrupt; $SIG{'TRAP'} = \&interrupt; $SIG{'ABRT'} = \&interrupt; $SIG{'STOP'} = \&interrupt; sub enter_critical { ++$in_critical; } sub leave_critical { --$in_critical; if ($interrupt) { $interrupt = 0; die("INTERRUPTED\n"); } } sub interrupt { if ($in_critical) { ++$interrupt; } else { die("INTERRUPTED\n"); } } ... don't even need threads ...