在脚本文件中定义了Perl包,如何有包导出子例程?

时间:2015-05-03 19:09:59

标签: perl

鉴于以下内容:

package My::Pack;

use Exporter::Easy (
    OK => [ qw(pack_func) ],
);

sub pack_func {
    ...
}

package main;
<script here that uses pack_func>

如何导入我想要的符号?

use无效,因为它正在寻找另一个要打开的文件。 require不支持use用于指定所需符号的语法。

我唯一的选择是在脚本中说My::Pac::pack_func()还是通过typeglob assignmnet手动导入符号?

1 个答案:

答案 0 :(得分:1)

声明:

use Some::Module qw(foo bar);

exactly equivalent to

BEGIN {
    require Some::Module;
    Some::Module->import( qw(foo bar) );
}

在您的情况下,My::Pack模块的代码已经加载,因此您不需要require它。因此,您可以这样做:

BEGIN { My::Pack->import( qw(pack_func) ) }