$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'; };