我收到错误
Useless use of private variable in void context
并且它位于仅包含}
的行。但是,我假设它引用之前的行,即$final_value -= 4;
。我启用了诊断以获取更多信息,并返回说You did something without a side effect in a context that does nothing with the return value
但是,如果我删除行$final_value -= 4;
,错误就会停止,但我的程序不再起作用了。我可以忽略这一点并继续吗?
感谢。
编辑 - 这是代码的一部分
elsif($size_of_array == 2){
if($array[0] > $array[1] && $array[0] >= 4){
my $final_value = $array[0];
for($final_value; $final_value > 0;){
$line =~ s/(.*?)$/"$1\n" . ( q{ } x $final_value . "}")/e;
$final_value -= 4;
}
}
}
答案 0 :(得分:8)
'for'循环的语法错误。
Perl期望C样式,这意味着第一个'语句'应该初始化,第二个测试和第三个增量。
你的'初始化'没有做任何事情:你只是在void上下文中使用变量 - 这就是它警告你:
#!/usr/bin/env perl
use strict;
use warnings;
my $final_value = 10;
for ( $final_value; $final_value > 0; ) {
$final_value -= 1;
}
如果您初始化$final_value
或只是将其留空,则不会给您带来同样的错误。
for ( ; $final_value > 0; ) {
此时,您可以使用while循环。
或者,您可以向另一个方向前进:
for ( my $final_value = 10; $final_value > 0; $final_value -= 1) {
print $final_value - 1;
}
或
for ( my $final_value = 10; $final_value--; ) {
print $final_value;
}