简单的perl添加程序出错?

时间:2012-11-01 18:08:02

标签: perl

嗨,我是一个新手perl学习者这个简单的perl程序

$inputline= <STDIN>;
print "first input";
print( $inputline); 
$inputline=<STDIN>;
print "second input";
print($inputline);
$sum= $inputline+$inputline;
print"sum 1stinput and 2ndinput";
print($sum);

输出

perl count.pl
3
4
first input3
second input4
sum 1stinput and 2ndinput : 8

为什么输出8而不是7?

4 个答案:

答案 0 :(得分:8)

因为您$inputline时会将4添加到自身。

如果要对两个输入求和,则必须使用两个变量,或者在变量更改之前执行加法。 E.g:

my $input1 = <>;
my $input2 = <>;
my $sum = $input1 + $input2;
print "Sum: $sum";

或者

my $input = <>;
my $sum = $input;
$input = <>;
$sum += $input;
print "Sum: $sum";

你可以做一些更简单的事情,例如:

perl -nlwe '$sum += $_; print "Sum: $sum";'

这基本上相当于:

use strict;
use warnings; # always use these

my $sum;
while (<>) {  # your input
    $sum += $_;
    print "Sum: $sum\n";
}

使用Ctrl-C或Ctrl-D打开循环(在Windows中为Ctrl-Z)。

答案 1 :(得分:5)

你使用变量$ intputline两次。第二次引用它时,它会覆盖以前的值。您需要为每个变量使用唯一的变量名称:

$inputline1= <STDIN>;
print "first input";
print( $inputline1); 
$inputline2=<STDIN>;
print "second input";
print($inputline2);
$sum= $inputline1+$inputline2;
print"sum 1stinput and 2ndinput";
print($sum);

答案 2 :(得分:4)

Perl(或其他任何人)如何区分$ inputline和$ inputline?为第二个变量选择一个不同的名称。

答案 3 :(得分:1)

总是并且没有失败包括脚本顶部的以下编译指示:

use strict;
use warnings;

使用词法范围的变量(“my”):

my $inputline= <STDIN>;
print "first input";
print( $inputline); 
my $inputline=<STDIN>;
...

运行此会引发以下异常:

"my" variable $inputline masks earlier declaration in same scope at ...

使用这些编译指示和“我的”可以帮助您避免脚本中的这个以及许多其他可能存在问题的区域。

希望这有帮助!