Por que estou tendo problemas para comparar linhas de entrada em Perl?
-
03-07-2019 - |
Pergunta
Eu não sei o que eu poderia estar fazendo de errado com esta transação simples, mas ele não está funcionando:
print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}
Basicamente, eu quero saber como testar a entrada do usuário. Este pequeno pedaço de código não vai funcionar para mim. Eu só estou tentando imprimir $ans
se y
é digitado pelo usuário.
Todas as sugestões?
EDIT: - Eu também tentei aspas simples
Solução
Você está fazendo algumas coisas erradas.
(1) Não use o operador de diamante (<>) quando quiser
(2) $ ans nunca será igual a "y" a menos que você morder-lo primeiro. Ela terá uma nova linha no final.
Outras dicas
A panacéia para as variáveis ??de conteúdo 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);
Apesar da sua pergunta direta foi respondida, você pode querer olhar para alternativas como Term :: readline
Você tentou:
if($ans eq 'y'){print $ans;}
?