3

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");
}
4

2 に答える 2

11

STDINから値を取得した後、chompへの呼び出しを追加してみてください。

$userName = <STDIN>;
chomp($userName);

STDINから読み込まれた値は、末尾に改行文字が含まれるためです。組み込みのchomp()は、文字列の末尾から改行を削除します。

于 2011-02-03T20:28:27.647 に答える
1

私があなたの質問を読んだとき、私はあなたが文字列と等しいの数値に対して問題を抱えようとしていると思いました。次の場合を考えてみましょう。

#!/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演算子のインライン使用にも注意してください。

于 2011-02-04T01:38:49.723 に答える