使用Perl创建包
发布时间:2020-12-15 23:37:26 所属栏目:大数据 来源:网络整理
导读:制作我的第一个简单包(我实际上是我的第一个包期)似乎有很多麻烦.我正在做我应该做的一切(我想)但它仍然无法正常工作.这是包(我想你可以称之为模块): package MyModule;use strict;use Exporter;use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS
制作我的第一个简单包(我实际上是我的第一个包期)似乎有很多麻烦.我正在做我应该做的一切(我想)但它仍然无法正常工作.这是包(我想你可以称之为模块):
package MyModule; use strict; use Exporter; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); $VERSION = 1.00; @ISA = qw(Exporter); @EXPORT = (); @EXPORT_OK = qw(func1 func2); %EXPORT_TAGS = ( DEFAULT => [qw(&func1)],Both => [qw(&func1 &func2)]); sub func1 { return reverse @_ } sub func2 { return map{ uc }@_ } 1; 我将此模块保存为MyModule(是的,它保存为.pm文件)保存在Perl / site / lib中(这是我存储的所有非内置模块的地方).然后我尝试使用这个模块的Perl脚本: use strict; use warnings; my @list = qw (J u s t ~ A n o t h e r ~ P e r l ~ H a c k e r !); use Mine::MyModule qw(&func1 &func2); print func1(@list),"n"; print func2(@list),"n"; 我把它保存为my.pl.然后我运行my.pl并得到此错误: Undefined subroutine &main::func1 called at C:myperlexamplefoldermy.pl line 7. 有人可以解释为什么会这样吗?提前致谢! 注意:是的,我的例子来自Perl Monks.见the Perl Monks “Simple Module Tutorial”.谢谢tachyon! 解决方法
您的包裹名称和使用名称不匹配.如果您将模块放在名为Mine的文件夹中,那么您需要相应地命名您的包:
包Mine :: MyModule 如果你没有在该文件夹中,那么你需要从你的使用电话中删除它 使用MyModule (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |