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

Foi útil?

Solução

Você está fazendo algumas coisas erradas.

(1) Não use o operador de diamante (<>) quando quiser . O operador de diamantes também vai ler arquivos a partir @ARGV, que você provavelmente não quer.

(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;}

?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top