该List::MoreUtils模块表示您使用变量,$a并$b在提供该变量时BLOCK使用该pairwise功能.例如:
use strict;
use warnings;
use List::MoreUtils qw'pairwise';
my @x = ( 1 .. 5);
my @y = (11 .. 15);
my @sums = pairwise { $a + $b } @x, @y;
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到这样的警告:
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.
有一种优雅的方式来处理这个问题吗?
更新:
eph*_*ent 23
取决于你认为优雅的东西.
no warnings qw(once);
our ($a, $b);
Run Code Online (Sandbox Code Playgroud)
这两个中的一个就足够了.您甚至可以轻松限制其范围.
my @sums = pairwise { no warnings qw(once); $a + $b } @x, @y;
my @sums = pairwise { our $a + our $b } @x, @y;
Run Code Online (Sandbox Code Playgroud)
明确指定包也会抑制警告.如果你在main,
my @sums = pairwise { $::a + $::b } @x, @y;
Run Code Online (Sandbox Code Playgroud)
这可能是一个错误List::Util.
全局关闭警告可能不是一个好主意,但你可以这样做:
{
no warnings 'once';
return join("_", @monsters) if @monsters && List::Util::reduce { $a && $b // 0 > 0 } 1,@monsters;
}
Run Code Online (Sandbox Code Playgroud)
这将仅关闭该部分代码的相关警告类别.
是的,不是你.你不能一次发出警告; 或者您可以预先声明$ a和$ b,以便它们不再被使用一次.
our ($a, $b);
Run Code Online (Sandbox Code Playgroud)
诀窍.我更倾向于这样做,因为它不会关闭任何其他内容的警告,而且它更具描述性.
| 归档时间: |
|
| 查看次数: |
2950 次 |
| 最近记录: |