Perl CPAN 发行版中 $AUTHORITY 变量的用途是什么?
What is the purpose of the $AUTHORITY variable in a Perl CPAN distribution?
根据Dist::Zilla::Plugin::Authority:
This plugin adds the authority data to your distribution. It adds the
data to your modules and metadata. Normally it looks for the PAUSE
author id in your Dist::Zilla configuration.
“权限数据”有什么用?为什么它被添加到所有模块?
在 Raku 中,一个模块(实际上是任何类型)可以有 attributes :ver<>
、:auth<>
和 :api<>
。这允许您向它传递一个版本、作者、and/or API 编号,您随后可以自省。
class C:ver<4.2.3>:auth<github:jane>:api<1> {}
say C.^auth; # OUTPUT: «github:jane»
在Perl中,包的权限可以这样定义:
package MyApp;
BEGIN { $MyApp::AUTHORITY = 'cpan:JOEBLOGGS'; }
权限应该是一个 URI,用于标识负责发布包的个人、团队或组织。伪 URI 方案 cpan:
是最常用的标识符。
$AUTHORITY
包变量可以与 authority pragma 一起使用,以根据其权限有条件地加载模块:
use authority 'cpan:JOE', My::Module => qw();
假设 @INC
路径是 /opt/perl/lib
,那么 Perl 将在尝试通常的 /opt/perl/lib/My/Module.pm
.
之前尝试加载 /opt/perl/lib/cpan_3A_JOE/My/Module.pm
还定义了 $AUTHORITY
,使用 UNIVERSAL::AUTHORITY::Lexical 启用模块权限内省。例如:
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
有关此变量的原始讨论,另请参阅 our $AUTHORITY。
根据Dist::Zilla::Plugin::Authority:
This plugin adds the authority data to your distribution. It adds the data to your modules and metadata. Normally it looks for the PAUSE author id in your Dist::Zilla configuration.
“权限数据”有什么用?为什么它被添加到所有模块?
在 Raku 中,一个模块(实际上是任何类型)可以有 attributes :ver<>
、:auth<>
和 :api<>
。这允许您向它传递一个版本、作者、and/or API 编号,您随后可以自省。
class C:ver<4.2.3>:auth<github:jane>:api<1> {}
say C.^auth; # OUTPUT: «github:jane»
在Perl中,包的权限可以这样定义:
package MyApp;
BEGIN { $MyApp::AUTHORITY = 'cpan:JOEBLOGGS'; }
权限应该是一个 URI,用于标识负责发布包的个人、团队或组织。伪 URI 方案 cpan:
是最常用的标识符。
$AUTHORITY
包变量可以与 authority pragma 一起使用,以根据其权限有条件地加载模块:
use authority 'cpan:JOE', My::Module => qw();
假设 @INC
路径是 /opt/perl/lib
,那么 Perl 将在尝试通常的 /opt/perl/lib/My/Module.pm
.
/opt/perl/lib/cpan_3A_JOE/My/Module.pm
还定义了 $AUTHORITY
,使用 UNIVERSAL::AUTHORITY::Lexical 启用模块权限内省。例如:
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
有关此变量的原始讨论,另请参阅 our $AUTHORITY。