use English qw( -no_match_vars ); my $leave_loop = 0; sub hup_handler($) { my $sig = shift; print "Got signal $sig in debugged program handler\n"; $leave_loop = 1; } $SIG{'HUP'} = \&hup_handler; my $tempfile; if (1 == scalar @ARGV) { $tempfile = $ARGV[0] } else { $tempfile = "/tmp/signal.$$"; print "My process is $$\n"; } open(my $fh, '>', $tempfile) or die $OS_ERROR; print $fh "$$\n"; close $fh; until ($leave_loop) { sleep 1; } unlink $tempfile;