Perl出口建议

时间:2014-02-06 06:39:31

标签: perl perl-exporter

我正在使用一个需要与perl接口的新程序。

示例代码表明所有方法都将导出到全局命名空间,如下所示:

use BGPmon::Fetch;
my $ret = init_bgpdata();
my $ret = connect_bgpdata();
my $xml_msg = read_xml_message();
...

然而,使用任何类似的方法会导致" Undefined subroutine &Fetch::init_bgpdata。"我知道模块有效,但似乎没有正确导出,因为我仍然可以使用长名称:BGPmon::Fetch::init_bgpdata();

模块没有正确导出的原因是什么?

注意:我很乐意分享方法代码,但我知道它不是模块的问题。它是我无法分享的代码集的一部分,我知道它可行,因为测试设法通过。

出口商部分

require Exporter;
our $AUTOLOAD;
our @ISA = qw(Exporter);
our %EXPORT_TAGS = ( 'all' => [ qw(connect_bgpdata read_xml_message
  close_connection is_connected messages_read uptime connection_endtime
  get_error_code get_error_message get_error_msg) ] );
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

Public source code(我的是开发者)

1 个答案:

答案 0 :(得分:2)

在您提供的代码中,您正在定义代码:all

所以你调用代码可以做到

use  BGPmon::Fetch ':all' ;

您也可以单独导入

use BGPmon::Fetch qw(init_bgpdata connect_bgpdata); # and so on

值得看看Exporter - 如果已经这样做了道歉