我的 Perl 代码面临一个问题。
我创建了一个包“Welcome.pm”,并在脚本“hello.pl”中使用它。但出现以下错误“未定义子例程 &main::First 在 hello.pl 第 6 行调用”
我也查看了其他答案,但仍然无法弄清楚代码有什么问题。
有人可以帮忙吗?
perl 模块 Welcome.pm
package Welcome;
use strict;
use warnings;
use base 'Exporter';
my @ISA = qw(Exporter);
my @EXPORT = qw(First);
sub First{
print "welcome\n\n";
}
1;
Perl 脚本 hello.pl
#!usr/bin/perl
use UsersModules::Welcome qw(First);
use strict;
use warnings;
First();
文件名和包名必须联系起来,所以语句
package UsersModules::Welcome
必须出现在文件中
UsersModules/Welcome.pm
The @ISA
数组需要是一个包变量(声明为our
) 代替词汇变量,但最好不要直接操作它
use parent 'Exporter';
然而,最好的选择是import the import
子程序来自Exporter
而不是继承它,所以你可以写
use Exporter 'import';
The @EXPORT
数组也必须是包变量
像这样
package UsersModules::Welcome;
use strict;
use warnings;
use Exporter 'import';
our @EXPORT = qw/ First /;
sub First{
print "welcome\n\n";
}
1;
如果你想导入一个名为@EXPORT
列表,那么就没有必要在你的列表中提及它use
陈述。 (如果你把它放在@EXPORT_OK
那么你必须在列表中命名它use
陈述。)
与上述模块一起,该主程序运行良好
#!usr/bin/perl
use strict;
use warnings;
use UsersModules::Welcome;
First();
output
welcome
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)