use vars '$flag'; $flag = 0; local $SIG{'TERM'} = sub { $flag = 1 } .... while (...) { ... die "got signal\n" if $flag; }