2

この単純なトランザクションで何が間違っているのかわかりませんが、うまくいきません:

print "OK? (y or n)\n";
$ans = <>;
print "\n";
if($ans eq "y"){print $ans;}

基本的に、ユーザー入力をテストする方法を知りたいです。この小さなコードは私にはうまくいきません。$ansユーザーが入力した場合に印刷しようとしyています。

助言がありますか?

編集: - 一重引用符も試しました

4

4 に答える 4

14

あなたはいくつか間違ったことをしています。

(1) <STDIN> が必要な場合は、ひし形演算子 (<>) を使用しないでください。diamond オペレーターは @ARGV からもファイルを読み取りますが、これはおそらく望ましくありません。

(2) 最初に chomp しない限り、$ans が "y" と等しくなることはありません。最後に改行があります。

于 2009-03-03T21:28:51.847 に答える
5

不思議なコンテンツの変数のすべての治療法:

use Data::Dumper;
$Data::Dumper::Useqq = 1; # show newlines, tabs, etc in visible form
$Data::Dumper::Terse = 1;
print '$ans is really: ', Dumper($ans);
于 2009-03-04T03:21:43.123 に答える
1

あなたの直接の質問には回答がありましたが、Term::Readlineのような代替手段を検討することをお勧めします。

于 2009-03-04T01:09:09.290 に答える
-1

やってみました:

if($ans eq 'y'){print $ans;}

?

于 2009-03-03T21:27:00.713 に答える