Perl包文件可以';找不到

Perl包文件可以';找不到,perl,Perl,我已经在perl中集成了示例函数。一切正常,但我无法连接Perl模块包文件(.pm) 请查看下面的代码 sample.pl #!/usr/bin/perl use strict; use warnings; use Sample; print Sample->test_function(); 下午四时正 package Sample; sub test_function { return 'Welcome'; } 一次之后运行sample.pl文件。返

我已经在perl中集成了示例函数。一切正常,但我无法连接Perl模块包文件(.pm)

请查看下面的代码

sample.pl

#!/usr/bin/perl

 use strict;
 use warnings;
 use Sample;
print Sample->test_function();
下午四时正

 package Sample;

  sub  test_function
  {

  return 'Welcome';

  }

一次之后运行sample.pl文件。返回错误“找不到Sample.pm”,但包文件在同一文件夹中可用。

问题的原因是找不到安装perl模块的位置。将下面的行添加到sample.pl文件中

 use strict;
 use warnings;

 use Cwd qw( abs_path );
 use File::Basename qw( dirname );
 use lib dirname(abs_path($0));


 use Sample;
 print Sample->test_function();

首先,您的
Sample.pm
文件必须返回一个真值。通常的方法是附加
1和该文件的结尾

package Sample;
use strict;
use warnings;
sub  test_function {
   return 'Welcome';
}
1;
Perl 5.26之后,当前目录从
@INC
中删除。有几种方法可以解决这个问题。例如,您可以在运行脚本时使用
-I
选项:

perl -I. sample.pl

有关如何处理
@INC
的更深入的讲座,请参见@daxim,该问题在1.51Cool中得到了解决,对于那些(像我一样)错过了这一变化的人来说:请注意,既然FindBin不是双重生命,它在老年人身上永远被打破。这只是我避免使用它的另一个原因。强制脚本的调用程序提供这些信息是没有意义的。
-I…
不添加arch dir,所以它并不总是有效的<代码>-Mlib=…
应该用于获取特定于构建的组件。