【问题标题】:Useless use of private variable in void context Perl在 void 上下文 Perl 中无用使用私有变量
【发布时间】:2017-09-29 23:43:52
【问题描述】:

我收到了错误

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;          
            }
        }
    }

【问题讨论】:

  • 很抱歉。代码很长,所以我不确定我应该添加多少。我现在已经用导致问题的块对其进行了编辑。
  • 我强烈认为错误来自for($final_value; ... 部分。也许您想改用while 循环。
  • @amon 是的,你是对的。我把它改成了一个while循环,它现在可以工作了。非常感谢。也许是因为我没有添加第三部分(迭代?)?
  • 错误肯定来自for($final_value循环
  • @amon 你是第一个,写一个答案?

标签: perl


【解决方案1】:

'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;
}

【讨论】:

  • 感谢您分解并解释它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 2022-12-17
  • 2019-10-08
  • 2014-05-23
  • 1970-01-01
相关资源
最近更新 更多