in reply to Disable Control +C

This works for me (ActiveState Perl 5.14 on WIndows 7):

use 5.010; $SIG{INT} = 'IGNORE'; my $x = 1; while ( $x <= 5 ) { say $x++; sleep 1; }

When I say 'works', I mean that Ctrl-C is disabled until until the programme ends (try it).

Replies are listed 'Best First'.
Re^2: Disable Control +C
by PilotinControl (Pilgrim) on Mar 12, 2013 at 20:29 UTC

    Here is my code:

    #!/usr/bin/perl use 5.010; use warnings; use strict; printf (" #############################\n"); printf (" ########## TEST MENU ########\n"); printf (" #############################\n"); sleep(2); $SIG{INT} = 'IGNORE'; while(1) { printf ("WHAT DO YOU WANT TO DO\n"); printf (" * * * * *\n"); printf (" 1- Option\n"); printf (" 2- Option\n"); printf (" 5-Exit \n"); printf (" * * * * *\n"); my $choose = <STDIN>; chomp($choose); if($choose eq 1) { option->client; } elsif($choose eq 2) { option2(); } elsif($choose eq 5) { printf("Good Bye :-)\n"); sleep(2); exit(1); }; };

    When you hit control +c within the program it sends errors to the screen...it prohibits control +c to kill the program. I have to choose option 5 to exit which is what I want...now to avoid the errors? Thanks.

      Hello PilotinControl,

      You just need to loop on $choose until it is defined:

      ... my $choose = <STDIN>; $choose = <STDIN> until defined $choose; # <-- Add this line chomp $choose; ...

      That will remove the warnings you are currently seeing.

      Hope that helps,

      Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

        Thanks that worked!