#!/usr/bin/perl use warnings FATAL => qw( all ); use strict; $|=1; print "setting main handler\n"; $SIG{ALRM} = sub { print "SIGARLM: main handler\n" }; print "set main handler\n"; sub f { print "sub f start\n"; local $SIG{ALRM} = sub { print "SIGALRM: sub handler\n" }; # line 9 print "sub f end\n"; } if (fork) { # parent f while 1; } else { # child sleep 7; print "child starting\n"; sleep 5 while kill ALRM => getppid; }