模块
package ExampleModule;
use strict;
use base "Exporter";
our @export = qw/hello_world/;
sub hello_world
{
print "Hello,world";
}
1
测试
perl -c examplemodule.pm
examplemodule.pm syntax OK
脚本:
use ExampleModule;
hello_world();
exit;
但我收到错误
错误: 无法在@INC中找到ExampleModule.pm(@INC包含:/ usr / local / lib64 / perl5 / usr / local / share / perl5 / usr / lib64 / perl5 / vendor_perl / usr / share / perl5 / vendor_perl / usr / lib64 / perl5 / usr / share / perl5。)at until.pl第229行。 BEGIN失败 - 汇编在until.pl第229行中止。
我的模块中有什么问题请告诉我
修改
package ExampleModule;
use strict;
use base "Exporter";
our @EXPORT = qw(hello_world);
sub hello_world {
print "Hello,world";
}
1;
使用ExampleModule.pm保存
#!/usr/bin/perl -w
use strict;
use lib "/home/Admin/Desktop/Perl_Work_Space/ExampleModule.pm/";
use ExampleModule ;
hell_world();
exit;
使用first.pl保存
收到错误
[Admin@localhost Perl_Work_Space]$ perl first.pl
Undefined subroutine &main::hell_world called at first.pl line 5.
答案 0 :(得分:1)
您在@INC
中缺少模块的路径。要修复它,你可以告诉perl在哪里寻找模块,
use lib "lib/"; # relative or absolute path to ExampleModule.pm
use ExampleModule;
hello_world();
同样ExampleModule.pm
顶部应包含行,并使用但不继承Exporter
模块,
package ExampleModule;
use strict;
use Exporter "import";
our @EXPORT = qw/hello_world/;
sub hello_world {
print "Hello,world";
}
1;
答案 1 :(得分:1)
除use lib ...;
语句外,包名和文件名必须具有相同的拼写,包括大小写。因此,请将文件重命名为ExampleModule.pm
。
虽然我想知道为什么perl -c examplemodule.pm
不会发出警告。
你必须使用our @EXPORT = qw/hello_world/;