2017-09-29 18 views
0

私はエラーに無駄な使用のPerl

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

。コードはかなり長いので、どのくらい追加したらよいか分かりません。私は今問題を引き起こしているチャンクでそれを編集しました。 –

+1

エラーは 'for($ final_value; ...')部分から来ていると思います。代わりに 'while'ループを使いたいかもしれません。 – amon

+0

@amonそうです、whileループに変更しました。 –

答えて

8

の一部です。

PerlはCスタイルを想定しています。つまり、最初の '文'が初期化され、2番目のテストと3番目の増分が必要です。

あなたの「初期化するには、」何もしていません。あなただけのボイドコンテキストで変数を使用している - それはに関する警告何である:あなたが $final_valueを初期化するか、単に空白のままにした場合

#!/usr/bin/env perl 

use strict; 
use warnings; 

my $final_value = 10; 

for ($final_value; $final_value > 0;) { 
    $final_value -= 1; 
} 

、それはあなたに同じエラーを与えることはありません。

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

それを分解して説明してくれてありがとう。 –

関連する問題