考虑以下两个脚本:
main.pl
#!/usr/bin/env perl
require 'lib.pl';
testSub('Hello World');
lib.pl
sub testSub
{
my ($input) = @_;
print $input, "\n";
}
1;
我需要使用sudo通过SSH远程运行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.
但是,如果将另一个脚本包含为依赖项,我怎么能这样做呢?
提前全部谢谢。
答案 0 :(得分:1)
Perl只能查看包含的本地文件系统,不能通过ssh通道回调来获取数据。因此,您需要在执行程序之前将libs.pl传输到另一端,或者只是将其内容直接包含在您的程序中。
如果您不喜欢这样做,也许Object :: Remote可以帮助您。但是不要问我如何使用它,我只是听到了很好的谈论它。