考虑以下 2 个脚本:
main.pl
#!/usr/bin/env perl
require 'lib.pl';
testSub('Hello World');
lib.pl
sub testSub
{
my ($input) = @_;
print $input, "\n";
}
1;
main.pl
使用 sudo 通过 SSH 远程编写脚本,同时包含 lib.pl
作为依赖。sudo
通过 SSH 运行单个 Perl 脚本:$ ssh user@host 'sudo perl' < /path/to/local/perl/script
Can't locate libs.pl in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at - line XX.
最佳答案
Perl 只能查看本地文件系统的包含,不能通过 ssh channel 回调获取数据。因此,您要么需要在执行程序之前将 libs.pl 转移到另一端,要么直接将其内容包含在您的程序中。
如果您不喜欢这样做,也许 Object::Remote 可以帮助您。但是不要问我怎么用,我只听过一个很好的讨论。
https://stackoverflow.com/questions/24599051/