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;
って書くかしないといけないのかな。