¿Por qué tengo problemas para comparar líneas de entrada en Perl?
-
03-07-2019 - |
Pregunta
No sé qué podría estar haciendo mal con esta simple transacción, pero no funciona:
print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}
Básicamente quiero saber cómo probar la entrada del usuario. Este pequeño código no funcionará para mí. Solo intento imprimir $ans
si el usuario ingresa y
.
¿Alguna sugerencia?
EDITAR: - También he intentado comillas simples
Solución
Estás haciendo un par de cosas mal.
(1) No utilice el operador de diamante (< >) cuando desee < STDIN > ;. El operador de diamantes también leerá archivos de @ARGV, que probablemente no desee.
(2) $ ans nunca será igual a " y " a menos que lo comas primero. Tendrá una nueva línea al final.
Otros consejos
Una cura para todas las variables de contenido misterioso:
use Data::Dumper;
$Data::Dumper::Useqq = 1; # show newlines, tabs, etc in visible form
$Data::Dumper::Terse = 1;
print '$ans is really: ', Dumper($ans);
Aunque su pregunta directa ha sido respondida, es posible que desee buscar alternativas como Término :: Readline
¿Has probado:
if($ans eq 'y'){print $ans;}
?