Perl CPAN发行版中$AUTHORITY变量的用途是什么?

Perl CPAN发行版中$AUTHORITY变量的用途是什么?,perl,cpan,dist-zilla,Perl,Cpan,Dist Zilla,根据: 此插件将权限数据添加到您的分发中。它增加了 将数据添加到模块和元数据中。通常它会寻找暂停 Dist::Zilla配置中的作者id “权威数据”的用途是什么?为什么要将其添加到所有模块中 另请参见Raku中的,模块(实际上是任何类型)可以具有:ver、:auth和:api。这允许您向其传递一个版本、作者和/或API编号,您可以随后进行自省 class C:ver<4.2.3>:auth<github:jane>:api<1> {} say C.^auth

根据:

此插件将权限数据添加到您的分发中。它增加了 将数据添加到模块和元数据中。通常它会寻找暂停 Dist::Zilla配置中的作者id

“权威数据”的用途是什么?为什么要将其添加到所有模块中

另请参见Raku中的,模块(实际上是任何类型)可以具有
:ver
:auth
:api
。这允许您向其传递一个版本、作者和/或API编号,您可以随后进行自省

class C:ver<4.2.3>:auth<github:jane>:api<1> {}
say C.^auth;      # OUTPUT: «github:jane»
权限应该是一个URI,标识负责发布包的人员、团队或组织。伪URI方案
cpan:
是最常用的标识符

$AUTHORITY
包变量可与pragma一起使用,以根据其权限有条件地加载模块:

use authority 'cpan:JOE', My::Module => qw();
假设
@INC
路径是
/opt/perl/lib
,那么perl将尝试在尝试通常的
/opt/perl/lib/cpan_3A_JOE/My/Module.pm
之前加载
/opt/perl/lib/My/Module.pm

还具有已定义的
$AUTHORITY
,可使用启用模块权限内省。例如:

use UNIVERSAL::AUTHORITY::Lexical;
if (HTML::HTML5::Writer->AUTHORITY ne HTML::HTML5::Builder->AUTHORITY)
{
  warn "Closely intertwined modules with different authors!\n";
  warn "There may be trouble ahead...";
}

有关此变量的原始讨论,请参见。

我认为这是针对
use UNIVERSAL::AUTHORITY::Lexical;
if (HTML::HTML5::Writer->AUTHORITY ne HTML::HTML5::Builder->AUTHORITY)
{
  warn "Closely intertwined modules with different authors!\n";
  warn "There may be trouble ahead...";
}
use UNIVERSAL::AUTHORITY::Lexical;
# Only trust STEVAN's releases
Moose->AUTHORITY('cpan:STEVAN'); # dies if doesn't match