コードの一部は、以下の私にエラーを与える理由は私には不明である:Try :: Tinyのfinallyブロックから値を返しても、なぜ「初期化されていない値の使用」警告が表示されるのですか?
Use of uninitialized value in addition (+) at combined_op_test.pl line 12.
私は$success_count
の値は、各繰り返しで、サブルーチンから返された値ずつ増加することを期待。
#!/usr/bin/env perl
use strict;
use warnings;
use 5.014;
use Try::Tiny;
my $success_count = 0;
for (1..10) {
$success_count += error_causing_sub();
}
sub error_causing_sub {
try {
die ("Error.");
} catch {
} finally {
if (@_) {
say "Error occured.";
return 0;
}
else {
say "Error did not occur.";
return 1;
}
};
}
すべてのヘルプは高く評価されています。ここでは
はコードです。
これは完全ではありません。 'finally'のRVは無視されます。失敗した場合、 'catch'のRVは関連しており、空です。自分の答えを書く時間がありません。 'catch {1}' – simbabque
5.14が 'if($ @)'に固定されています。最後のスニペットは 'if($ @)'を使わないので、5.14より前であってもうまくいきました。 – ikegami