0

そのため、ユーザーにコマンド、加算、減算などを要求し、その操作を完了するために数字を要求する比較的単純なプログラムを作成しています。すべてが記述され、正常にコンパイルされますが、コマンド (加算、減算など) を入力すると、正しく比較されません。if ケースの操作ブランチに入る代わりに、追加した無効なコマンド catch に移動します。以下は、宣言と最初の if ステートメントを含むコードの一部です。

my $command = <STDIN>;
my $counter = 1;
#perform the add operation if the command is add
if (($command eq 'add') || ($command eq 'a')){

    my $numIn = 0;
    my $currentNum = 0;
    #While NONE is not entered, input numbers.
    while ($numIn ne 'NONE'){
        if($counter == 1){
            print "\nEnter the first number: ";
        }else{
            print "\nEnter the next number or NONE to be finished.";
        }
        $numIn = <STDIN>;
        $currentNum = $currentNum + $numIn;

        $counter++;
    }

    print "\nThe answer is: #currentNum \n";

#perform the subtract operation if the command is subtract
}`

add を入力するとこれがスキップされる理由を誰かが知っていますか?

4

1 に答える 1

5

$command にはおそらくまだ新しい行が付加されているため、eq は失敗します。なぜなら "追加" != "追加\n"

正規表現を使用して、コマンドの最初の文字を確認することを検討してください。

$command =~ /^a/i

または $command でチョップを使用して、最後の文字を削除します。

chop($command)
于 2012-09-07T23:23:41.627 に答える