I write my Perl scripts on Debian and have started testing them on ActivePerl, in hopes of releasing them to Win32-only cow-orkers.
The snippet below shows the first obstacle in my cross-platform efforts - no SIGARLRM on Win32. This shouldn't be a show-stopper, as there *must* be alternatives for user-input timeout. So far I've found Term::Prompt. Any monks used that module? What other methods should I consider for timing-out on user input?
BTW, thanks to converter, mothra, dws and Petruchio for suggestions in CB of *cough* dubious practicality {grin}
cheers,
Don
striving toward Perl Adept
(it's pronounced "why-bick")
#!/usr/bin/perl -w
# alarum.pl
# 2001-04-26
use strict;
use Term::ReadKey;
my $pass;
print "\n",
" Prompting for password\n",
" (*not* echoed to screen nor written to disk)\n\n",
' Enter password:';
ReadMode('noecho');
eval {
local $SIG{ALRM} = sub { die "ALARUM" };
alarm(60);
chomp($pass = <STDIN>);
alarm(0);
};
if ($@ =~ /ALARUM/) {
print "\n\n",
" Sorry - you waited too long before entering a password.\n",
" Try again, if you want.\n\n";
ReadMode(0);
exit;
}
ReadMode(0);