如标题所示,尝试使用我的perl模块时出现此错误,但是我不知道这意味着什么,而且我似乎在互联网上找不到任何明确的结果。我的代码包含3个文件:一个使用模块(MyLib.pm)的脚本(myApp.pl),该模块又使用另一个模块(Secret.pm)。在这里,它们是完整的:

myApp.pl

#!/path/to/perl

my $version = "1.0.0";

use warnings;
use strict;
use Testing::MyLib;

MyLib.pm
package Testing::MyLib;

use strict;
use warnings;

use Testing::Secret;

Secret.pm
package Testing::Secret;

use strict;
use warnings;

use Exporter qw( import );
our @EXPORT = ();
our %EXPORT_TAGS = (
  'all' => [ qw( MY_CONSTANT )]
);
our @EXPORT_OK = (
  @{ $EXPORT_TAGS{all}}
);

use constant MY_CONSTANT => 'bla bla bla';

它们以以下文件结构退出:
/bin/myApp.pl
/lib/perl/Testing/MyLib.pm
/lib/perl/Testing/Secret.pm

错误消息的详细信息是:
[user@pc ~]$ myApp.pl
"import" is not exported by the Exporter module at /###/lib/perl/Testing/Secret.pm line 6
Can't continue after import errors at /###/lib/perl/Testing/Secret.pm line 6
BEGIN failed--compilation aborted at /###/lib/perl/Testing/Secret.pm line 6.
Compilation failed in require at /###/lib/perl/Testing/MyLib.pm line 6.
BEGIN failed--compilation aborted at /###/lib/perl/Testing/MyLib.pm line 6.
Compilation failed in require at /###/bin/myApp.pl line 7.
BEGIN failed--compilation aborted at /###/bin/myApp.pl line 7.

最佳答案

导出程序在模块的 namespace 中导出(创建)use Exporter qw( import );import requests。这是处理从模块中导出请求的方法。早于5.57的Exporter版本无法识别此请求,从而导致您收到错误消息。

由于自Perl 5.8.3起,Exporter 5.57或更高版本已与Perl bundle 在一起,因此您必须具有相当古老的Perl版本和模块!

您可以升级Exporter,也可以从Exporter继承import,这有点麻烦,但可以与任何版本的Exporter一起使用。

package MyPackage;
use strict;
use warnings;
use Exporter;
our @ISA = 'Exporter';
our @EXPORT_OK = ...;

关于perl - 该错误是什么意思: “import is not exported by the exporter module”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53074342/

10-11 17:20