If sort BLOCK LIST is encountered in a package, Perl switches off "used only once" warnings for the $a and $b package variables.
use warnings; use List::Util; my $reduced = List::Util::reduce { $a + $b } 1, 2, 3, 4; print "$reduced\n"; ()=sort{;}();
... that's why sort is magic.
List::Util could easily eliminate the warning; and it doesn't even need to use XS trickery to do so. It just needs to add something like this to its import method:
my $pkg = caller; eval qq[ package $pkg; our \$a; our \$b; ];
I believe the old pure Perl implementation of List::Util used to do something along these lines. It seems the shiny, new XS-only version does not. I'd count that as a regression.
In reply to Re: Eliminating "used only once" warnings from List::Util::reduce
by tobyink
in thread Eliminating "used only once" warnings from List::Util::reduce
by davido
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |