print "Input value \n";
$line = <>;
chomp $line;
@val = $line;
for ($i = 1; $i <= 10; $i++){
print -@val* $i;
}
我在这里有一个简单的for循环,用户输入我存储在@val
中的值,我希望我的循环从1到10迭代并打印出-@val * $i
的值。假设我的@val = 2
,那么我应该看到输出:-2 -4 -6 - 8 ... -20。但我的实际输出是:-1 -2 ...... -10。出了什么问题?
答案 0 :(得分:1)
正如我在评论中所写,我无法想象你通过将$line
的值复制到数组@val
来实现的目标。我还想提出其他一些要点
你必须始终
use strict;
use warnings 'all';
在所有Perl程序的开头。然后,您必须使用my
声明所有变量,它会提醒您许多您可能忽略的简单错误
C风格的for
循环在Perl中很少有用。通常最好迭代一个简单的列表。在您的程序中
for my $i ( 1 .. 10 ) {
...
}
所以把所有这些放在一起,你的程序就像这样
use strict;
use warnings 'all';
print "Input value\n";
my $val = <>;
chomp $val;
for my $i ( 1 .. 10 ) {
print -$val * $i;
}
值得指出的是,当for
循环的内容只是这样的单个语句时,您可以使用for
作为语句修饰符并只写
print -$val * $_ for 1 .. 10;
答案 1 :(得分:-1)
问题在于您将值存储在数组中(@val
)。当您在标量上下文中使用该数组时(for循环中的数学运算),您只需获得数组中的元素数。在您的情况下1.将@val
更改为$val
或直接使用$line
。