如何缩短常量名称?

Jim*_*Jim 0 perl module constants perl-module

我有一个模块A::B::C::D::E.在模块中我定义了一些常量:

use constant {  
    PERSON => 'person',  
    EMPLOYEE => 'employees',  
};
Run Code Online (Sandbox Code Playgroud)

我做:

our @EXPORT_OK qw / PERSON EMPLOYEE /;
Run Code Online (Sandbox Code Playgroud)

use在另一个脚本中的模块和常量工作,如果我这样做:

A::B::C::D::E::PERSON
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用PERSON而不必包含完整的模块名称?我PERSON在我的脚本中导入但它不起作用.

cjm*_*cjm 8

@EXPORT_OK只标记"可用于导出"(假设您已正确将模块连接到导出器).它默认不导出它们.

在你的脚本中,做

use A::B::C::D::E qw / PERSON EMPLOYEE /;
Run Code Online (Sandbox Code Playgroud)

从模块中导入这些常量.

更新: 听起来您还没有正确地将模块连接到Exporter.为此,您可以包含以下A/B/C/D/E.pm任一项:

use Exporter 5.57 'import'; # v5.57 introduced an exportable import method
Run Code Online (Sandbox Code Playgroud)

要么

use Exporter ();
our @ISA = qw(Exporter); # also include any other base classes you have
Run Code Online (Sandbox Code Playgroud)

我更喜欢第一种方法,它不会使您的包成为Exporter的子类.

  • @Jim:你有没有要求出口商; 我们的@ISA = qw(Exporter);`在你的`E.pm`文件中? (2认同)