Subscribed unsubscribe Subscribe Subscribe

List::Util::reduceとかで警告が出る

List::Util::reduceとかってほとんど使ったことなくて、ちょっと使ってみようと

#!/usr/bin/perl
use strict;
use warnings;
use List::Util 'reduce';

print reduce { $a + $b } 1 .. 10;

とか書いてみたら、

$ perl hoge.pl
Name "main::b" used only once: possible typo at hoge.pl line 6.
Name "main::a" used only once: possible typo at hoge.pl line 6.
55

って警告が出る。
sort関数とかでは$aも$bも問題なく使えるのになー。
よくわからずググってみると
perl - How do I prevent List::MoreUtils from warning about using $a and $b only once? - Stack Overflow
とか。

#!/usr/bin/perl
use strict;
use warnings;
use List::Util 'reduce';

no warnings 'once';
print reduce { $a + $b } 1 .. 10;

とするとか

#!/usr/bin/perl
use strict;
use warnings;
use List::Util 'reduce';

print reduce { our ($a, $b); $a + $b } 1 .. 10;

って書くかしないといけないのかな。