在Perl中添加两个数字

v9tzhpje  于 2022-12-13  发布在  Perl
关注(0)|答案(4)|浏览(229)

我已经编写了以下Perl代码:

print "Enter two numbers \n";
$choise = <STDIN>;
$choise2 = <STDIN>;
$res = add($choise1, $choise2);
print "\n and the result is $res";

sub add
{
    ($x,$y) = @_;
    $res = $x + $y;
    return $res;    
}

但是当我输入两个输入时,输出是错误的。例如,将4和5相加,我得到的输出是5,而不是9。为什么?

ct2axkht

ct2axkht1#

更改此行:

$res = add($choise1 , $choise2);

至:

$res = add($choise , $choise2);

您确实应该在所有脚本的开头使用use strict;use warnings;

ttcibm8c

ttcibm8c2#

每个人都在重复“使用警告”是有原因的;使用严格;“初学者。
这个脚本有六个问题,其中大部分问题都会在这样做时暴露出来。
在任何情况下,当你感到困惑时,第一步应该是确定到底发生了什么。正如上面有人提到的,基本错误是变量名中的一个错字。只要在你的sub中打印$x,$y的内容就可以说明这一点。

#!/usr/bin/perl
use warnings;
use strict;

print "Enter two number \n";
my $choise1 = <STDIN> ;
my $choise2 = <STDIN> ;
my $res = add($choise1 , $choise2);
print "\n and the result is $res\n" ;

sub add
{
    my ($x,$y) = @_;
    # printing $x,$y here would have shown the problem
    my $res = $x + $y ;
    return $res ;   
}
yjghlzjz

yjghlzjz3#

您已经将第一个数字定义为$choise,但是您要将它作为$choise1传入以进行加法运算。结果为0。因此,在您的示例中,0 + 5 = 5。

moiiocjp

moiiocjp4#

修改的程序

print "Enter two number \n";
    $choise1 = <STDIN> ;
    $choise2 = <STDIN> ;
    $res = add($choise1 , $choise2);
    print "\n and the result is $res" ;

    sub add
    {
        ($x,$y) = @_;
        $res = $x + $y ;
        return $res ;
    }

输出::root@测试虚拟机:/home/test/Prasad_sample# perl sample_input.pl输入两个数字4 5
结果为9
代码中的以下$choise =行出现问题;
你提到了“$choise”而不是“$choise1”。你必须传递有效的参数给perl中的子例程。

相关问题