我正在尝试在我正在做的新脚本中创建和使用模块,但我还不熟悉模块。我一直在关注一些教程,即使我有与教程中“几乎”完全相同的代码,它也不起作用,当我运行我的测试脚本时,我收到以下错误:
Undefined subroutine &main::func1 called at ../../bin/fftg.pl line 21.
这是我的主要脚本:
#!/usr/bin/perl
# ......
# comments here
# ......
use strict;
use warnings;
use File::Basename qw(dirname);
use Cwd qw(abs_path);
use lib dirname(dirname abs_path $0) . '/lib';
use FFTG::PID qw(:DEFAULT);
print func1(10,20);
这是模块,创建为文件lib/FFTG/PID.pm:
package PID;
use strict;
use warnings;
use Exporter;
our $VERSION = 1.00;
our @ISA = qw(Exporter);
our @EXPORT = qw(&func1 &func2); # I tried all lines without &
our @EXPORT_OK = qw(&func1 &func2); # I tried all lines without &
our %EXPORT_TAGS = ( DEFAULT => [qw(&func1)],
Both => [qw(&func1 &func2)]);
sub func1
{
my ($x, $y) = @_;
return $x + $y;
}
sub func2
{
return "tata\n";
}
1;
请问我做错了什么?我尝试使用以下方法加载东西:
use FFTG::PID qw(:DEFAULT);
use FFTG::PID;
use FFTG::PID qw(funct1);
use FFTG::PID qw(&funct1);
没有任何效果(同样的错误)
我还尝试修改模块,修改这些行删除或添加 & :
our @EXPORT = qw(func1 func2);
our @EXPORT_OK = qw(func1 func2);
同样的问题
任何提示?
我的文件夹和文件是:
MIF/root@sm1p0003vmo /wminfs/mc/projects/FFTGv2: pwd
/wminfs/mc/projects/FFTGv2
MIF/root@sm1p0003vmo /wminfs/mc/projects/FFTGv2: ls -al bin/fftg.pl
-rwxr-x--- 1 root root 545 May 18 09:49 bin/fftg.pl
MIF/root@sm1p0003vmo /wminfs/mc/projects/FFTGv2: ls -al lib/FFTG/PID.pm
-rw-r----- 1 root root 344 May 18 09:37 lib/FFTG/PID.pm
MIF/root@sm1p0003vmo /wminfs/mc/projects/FFTGv2:
感谢和问候,