Perlの入力からの行を比較するのに問題があるのはなぜですか?
-
03-07-2019 - |
質問
この単純なトランザクションで何が間違っているのかわかりませんが、機能していません:
print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}
基本的に、ユーザー入力をテストする方法を知りたいです。この小さなコードは私には機能しません。 $ans
がユーザーによって入力された場合、y
を印刷しようとしています。
提案はありますか
編集:-一重引用符も試しました
解決
あなたはいくつか間違ったことをしている。
(1)<!> lt; STDIN <!> gt;が必要な場合は、ダイアモンド演算子(<!> lt; <!> gt;)を使用しないでください。また、ダイアモンド演算子は@ARGVからファイルを読み取りますが、これはおそらく必要ありません。
(2)$ ansが<!> quot; y <!> quot;と等しくなることはありません。最初にムシャムシャ食べない限り。最後に改行があります。
他のヒント
不思議なコンテンツの変数に対する万能薬:
use Data::Dumper;
$Data::Dumper::Useqq = 1; # show newlines, tabs, etc in visible form
$Data::Dumper::Terse = 1;
print '$ans is really: ', Dumper($ans);
直接的な質問には回答しましたが、 Term:のような代替案をご覧ください。 Readline
試してみました:
if($ans eq 'y'){print $ans;}
?
所属していません StackOverflow