0
desactiva el cronómetro.
Este primer ejemplo pide al usuario un password, controlando si el tiempo
de lectura ha excedido un cierto límite:
lhp@nereida:~/Lperl/src$ cat -n time_exceeded.pl 1 #!/usr/bin/perl -w 2 use strict; 3 use Term::ReadKey; 4 5 my $deadline = (shift || 3); 6 my $time_exceeded = 0; 7 sub set_time_exceeded { $time_exceeded = 1; } 8 ReadMode('noecho'); 9 local $SIG{ALRM} = "set_time_exceeded"; 10 print "Teclee su password: "; 11 alarm($deadline); 12 my $passwd = ReadLine(0); # 0 = lectura normal desde STDIN 13 alarm(0); 14 ReadMode 0; # Restaurar valores originales 15 print "\n"; 16 print STDERR "Tiempo excedido.\n" if $time_exceeded;En este ejemplo hemos utilizado el módulo Term::ReadKey para evitar el eco del tecleo de la clave en la pantalla.
Para leer un password es recomendable que use el módulo Term::ReadPassword disponible en CPAN:
lhp@nereida:~/Lperl/src$ perl -wd -e 0 main::(-e:1): 0 DB<1> use Term::ReadPassword DB<2> $password = read_password('password: ', 3) password: DB<3> x $password 0 undef DB<4> $password = read_password('password: ', 10) password: DB<5> x $password 0 'skasjfd' DB<6> $password = read_password('password: ') password: DB<7> x $password 0 'sdhdfh'
Casiano Rodríguez León