【发布时间】:2021-08-08 11:27:10
【问题描述】:
我有一个简单的 Perl 脚本,它使用位于另一个文件 common.pl 中的辅助函数:
main.pl
#!/usr/bin/perl
use strict;
use warnings;
use Cwd 'abs_path';
use File::Basename qw( fileparse );
use File::Path qw( make_path );
use File::Spec;
require "common.pl"; # line 15
#...
common.pl
#!/usr/bin/perl
use strict;
use warnings;
sub getTimeLoggerHelper{
#....
}
1;
本地一切运行良好,但是当我尝试通过 ssh 运行它时出现错误:
Can't locate common.pl in @INC (@INC contains:
/Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18
/Network/Library/Perl/5.18/darwin-thread-multi-2level
/Network/Library/Perl/5.18
/Library/Perl/Updates/5.18.2/darwin-thread-multi-2level
/Library/Perl/Updates/5.18.2
/System/Library/Perl/5.18/darwin-thread-multi-2level
/System/Library/Perl/5.18
/System/Library/Perl/Extras/5.18/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.18 .) at /Users/snaggs/scripts/main.pl line 15.
[编辑 1]
如果我登录到远程计算机并运行相同的脚本,则不会出现错误。
[编辑 2]
我还尝试将common.pl 转换为模块:
common.pm
package Common;
use strict;
use warnings;
sub getTimeLoggerHelper{
#....
}
1;
__END__
从main.pl 我这样称呼它
use Module::Load;
load Common;
同样的问题,本地工作,来自 ssh - 同样的错误:
Can't locate Common.pm in @INC (you may need to install the Common module)
如何解决这个问题?
【问题讨论】:
-
Perl 中没有
load。那是语法错误。 common.pl 文件在哪里? -
@simbabque 在与
main.pl相同的文件夹中 -
@simbabque:
load由Module::Load提供,在前一行导入。 -
@borodin 我明白了。我想我还是睡着了。新年快乐! :-)