use strict; use warnings; my $file = 'reqtest.pl'; my $interrupted = 0; open my $fh, ">$file" or die "Can't create file '$file': $!: $^E\n"; print $fh <<'EOT'; BEGIN { print STDERR "Hit CTRL+C now!\n"; sleep 3; } 1; EOT close $fh; $SIG{INT} = sub { print "Caught SIGINT. Terminating.\n"; $interrupted = 1; }; sub handle_sigint { if (-f $file) { unlink $file or warn "Can't delete file '$file': $!: $^E\n"; } else { print STDERR "file is already deleted (!)\n"; } exit; } require $file or die "require() failed\n"; handle_sigint() if $interrupted; unlink $file or die "Can't delete file '$file': $!: $^E\n";