考虑以下两个脚本:
main.pl
#!/usr/bin/env perl
require 'lib.pl';
testSub('Hello World');
lib.pl
sub testSub
{
my ($input) = @_;
print $input, "n";
}
1;
我需要通过SSH使用sudo远程运行main.pl
脚本,同时包括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只能查看本地文件系统中的include,而不能通过ssh通道回调以获取数据。因此,您要么需要在执行程序之前将lib .pl传输到另一端,要么只需将其内容直接包含在您的程序中。
如果你不喜欢这样做,也许Object::Remote可以帮助你。但是不要问我如何使用它,我只听过关于它的精彩演讲。