in reply to Re^3: Not Catching Signals While Program is Prompting with IO::Prompt
in thread Not Catching Signals While Program is Prompting with IO::Prompt
use Time::HiRes qw(usleep); my $PROMPT="What's the ticket number?\n"; my $TRY_AGAIN_PROMPT="excuse me?\n"; my $TICKET_NUMBER=prompt_until($PROMPT, $TRY_AGAIN_PROMPT, '^\d{7}$|^NOTICKET$', 1500); sub prompt_until { my $prompt_text=$_[0]; my $try_again_prompt=($_[1])? $_[1] : ''; my $until_regex=($_[2])? $_[2] : '.*'; my $speed=($_[3])? $_[3] : '0'; my $answer; if ($speed) { print_slow($prompt_text,$speed); } else { print "$prompt_text"; } $answer=<STDIN>; until ($answer=~m/$until_regex/) { if ($speed) { print_slow($try_again_prompt,$speed); } else { print "$try_again_prompt"; } $answer=<STDIN>; } chomp $answer; return $answer; } ###################################################################### +########## sub print_slow { my $speed=pop(@_); my $phrase=join('',@_); my @characters=split(//,$phrase); foreach my $char (@characters) { print $char; usleep($speed); } } ###################################################################### +##########
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: Not Catching Signals While Program is Prompting with IO::Prompt
by BrowserUk (Patriarch) on Jun 12, 2012 at 23:29 UTC | |
by gg48gg (Sexton) on Jun 13, 2012 at 16:32 UTC |