我写了以下perl代码:
print "Enter two number \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! ,为什么?
答案 0 :(得分:8)
更改此行:
$res = add($choise1 , $choise2);
为:
$res = add($choise , $choise2);
你应该在所有脚本的开头use strict;
和use warnings;
。
答案 1 :(得分:3)
有一个原因,为什么每个人都在唠叨“使用警告;使用严格;”初学者。
这个脚本有六个问题,其中大部分都是通过这样做来揭示的。
在任何情况下,你困惑的第一步应该是确切地确定发生了什么。正如上面刚刚提到的那样,基本错误是变量名中的拼写错误。只需在你的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 ;
}
答案 2 :(得分:1)
您已将第一个数字定义为$ choise,但您将其传入以添加为$ choise1。这最终为0.所以在你的例子中,0 + 5 = 5。
答案 3 :(得分:0)
修改后的程序
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 ;
}
OUTPUT :: root @ test-virtual-machine:/ home / test / Prasad_sample #perl sample_input.pl 输入两个数字 4 5
,结果是9
以下代码中的代码出现问题 $ choise =;
你提到“$ choise”而不是“$ choise1”。你必须将有效参数传递给perl中的子程序。