in reply to Force 2 'ctrl-c's to kill program

Try this:

#! perl -slw use strict; use 5.010; use Time::HiRes qw[ time sleep ]; $|++; $SIG{ INT } = sub { state $last = 0; if( ( time - $last ) > 2 ) { $last = time; return; } die 'Interupted by ^C^C'; }; while( 1 ) { printf "\rtum te tum: %f", time; sleep 0.1; }

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: Force 2 'ctrl-c's to kill program
by albob (Sexton) on Feb 11, 2013 at 17:34 UTC
    This certainly seems to work. Must get my head around what it is doing now. Thanks.
      Must get my head around what it is doing now.

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

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
        Ah, that makes a lot of sense. "State" was new to me (not using 5.010 yet) so threw me a little. Cheers