####### # calling.pl eval { system ("called.pl"); }; $exit_val = $? >> 8; ####### # called.pl $SIG{INT} = \&exit_gracefully; main block ... $exit_value = 0; exit $exit_value; sub exit_gracefully { $SIG{INT} = \&exit_gracefully; print "Program interrupted .. \n"; exit (-2); }