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