$SIG{ INT } = sub {
## State makes $last a closure; that is a variable that remember's its value
## between invocations of the subroutine
state $last = 0;
## if the time now is greater than 2 seconds later than the last time we saw a ^C
if( ( time - $last ) > 2 ) {
## Overwrite the last time with the current time
$last = time;
## And just return; ignoring this ^C
return;
}
## However, if it is less than 2 seconds; die.
die 'Interupted by ^C^C';
};