$ cat sigtrap #!/usr/bin/perl $SIG{'INT'} = 'ABORT'; sub ABORT { print "\nStop the loop?? (y/n) : "; chop($ch=); if ($ch =~ /[yY]/) { exit(1); } else { redo; } } $no=0; while (1) { print "$no\n"; sleep 2; $no++ } #### $ ./sigtrap 0 1 2 3 ^C Stop the loop?? (y/n) : n Can't "redo" outside a loop block at ./sigtrap line 16, line 1.