my @list = split (....) $SIG{INT} = \&catch_zap; foreach my $nam (@list) { ## Create foo object my $foo = new SUB::foo; $foo->name($nam); ... my ($result, $error_message)=$foo->run; ... ## Save Data my $file = ...; open FH , "> $file" || die "Couldn't open file: $!"; ... print FH "$result \n"; close FH; } sub catch_zap { my $signame = shift; &Warning("Somebody sent me a SIG$signame - trying to clean\n"); die "HEY I'M **done** STOP THIS PROGRAM __NOW__"; }