HTMLpointHTMLpoint HTMLpoint.com


 F.A.Q. su PERL


24. ¿Cómo puedo hacer para que en un script que exige usar determinadas teclas por parte del usuario, éste no se bloquee en el caso en que se cometa un error de digitación?


Los métodos son variados: en primer lugar, a través de las expresiones regulares, se puede comprobar si el STDIN está incluido en las posibilidades que queremos darle al usuario.
Personalmente, prefiero utlizar un método ligeramente distinto: imaginad que tenéis el siguiente script, que le pide al usuario una simple respuesta "y" o "n":

do {
print "Responde \"y\" o \"n\"\n";
chomp($respuesta=<STDIN>);
if ($respuesta eq "y") {
#Haz algo
} elsif ($respuesta eq "n") {
# Haz otra cosa
} else {
print "$respuesta: carácter no reconocido\n";
}
} until "y n" =~ $respuesta


Intentad "traducir" el script: haz {todo el bloque entre llaves} hasta que la respuesta sea "y" o "n".
¡Eso es todo! En la práctica, el código despues del "do" se repite hasta que STDIN sea "y" o "n", sin otra posibilidad.

[ Índice ]     [ Siguiente ]
  Vuelve a principio de página