嗨,我是一个新手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?
答案 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 ...
使用这些编译指示和“我的”可以帮助您避免脚本中的这个以及许多其他可能存在问题的区域。
希望这有帮助!