Perlの入力からの行を比較するのに問題があるのはなぜですか?

StackOverflow https://stackoverflow.com/questions/608254

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top