この単純なトランザクションで何が間違っているのかわかりませんが、うまくいきません:
print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}
基本的に、ユーザー入力をテストする方法を知りたいです。この小さなコードは私にはうまくいきません。$ans
ユーザーが入力した場合に印刷しようとしy
ています。
助言がありますか?
編集: - 一重引用符も試しました
この単純なトランザクションで何が間違っているのかわかりませんが、うまくいきません:
print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}
基本的に、ユーザー入力をテストする方法を知りたいです。この小さなコードは私にはうまくいきません。$ans
ユーザーが入力した場合に印刷しようとしy
ています。
助言がありますか?
編集: - 一重引用符も試しました
あなたはいくつか間違ったことをしています。
(1) <STDIN> が必要な場合は、ひし形演算子 (<>) を使用しないでください。diamond オペレーターは @ARGV からもファイルを読み取りますが、これはおそらく望ましくありません。
(2) 最初に chomp しない限り、$ans が "y" と等しくなることはありません。最後に改行があります。
不思議なコンテンツの変数のすべての治療法:
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;}
?