EQが私の文字列入力で動作しないのはなぜですか?
-
28-10-2019 - |
質問
Perlとすなわち、プログラムの流れを学び始めたばかりです。文字列と数字の評価と適切な演算子を使用することとの主な顕著な違いです。シンプルなスクリプト、私はここで私を夢中にさせています。それは非常にシンプルである場合、「マイク」が実行され、機能しないでください。代わりにelseステートメントを出力します。助けてください
#!C:\strawberry\perl\bin\perl.exe
use strict;
#use warnings;
#use diagnostics;
print("What is your name please?");
$userName = <STDIN>;
if($userName eq "mike"){
print("correct answer");
}
else{
print("Wrong answer");
}
解決
私があなたの質問を読んだとき、私はあなたが等しい文字列と数値の値に問題を抱えていると思っていました。次のケースを検討してください。
#!/usr/bin/env perl
use strict;
use warnings;
print("What is the meaning of life, the universe and everything? ");
chomp(my $response = <STDIN>);
if ( $response == 42) {
#if ( 42 ~~ $response ) {
print "correct answer\n";
} else {
print "Wrong answer\n" ;
}
2つの異なるものを試してください if
ステートメント。似たようなものに答える family
そして、何が起こるか見てみましょう。 ~~
PERLでこの問題の一部を助けたスマートマッチオペレーターです。それについてもっと読んでください ここ (「詳細にスマートマッチング」の下)。また、のインライン使用にも注意してください chomp
オペレーター。
他のヒント
stdinから価値を取得した後、Chompに電話を追加してみてください:
$userName = <STDIN>;
chomp($userName);
Stdinから読まれた値は最後にNewlineキャラクターを持つためです。 chomp()内蔵は、文字列の端から新しいラインを削除します。
所属していません StackOverflow