How do I prevent List::MoreUtils from warning about using $a and $b only once?

perl

Solution

Depends on what you consider elegant.

no warnings qw(once);
our ($a, $b);

One of these two will suffice. You can even limit their scope pretty easily.

my @sums = pairwise { no warnings qw(once); $a + $b } @x, @y;
my @sums = pairwise { our $a + our $b } @x, @y;

Explicitly specifying the package will suppress the warning too. If you're in `main`,

my @sums = pairwise { $::a + $::b } @x, @y;

Problem

The `List::MoreUtils` module indicates that you use the variables `$a` and `$b` when supplying the `BLOCK` that goes with the `pairwise` function. For example: ``` use strict; use warnings; use List::MoreUtils qw'pairwise'; my @x = ( 1 .. 5); my @y = (11 .. 15); my @sums = pairwise { $a + $b } @x, @y; ``` But when I do that, I get warnings like this: ``` Name "main::b" used only once: possible typo at try.pl line 7. Name "main::a" used only once: possible typo at try.pl line 7. ``` Is there an elegant way to deal with this problem? Update: See the answer by Ether for perl v5.19.6 and beyond: problem solved.

Original source