Perl - 通过包含 require 指令的 SSH 远程运行脚本

考虑以下 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/

相关文章:

grails - grails spring security openId插件:无法使用Gmail

grails - 如何根据组合框中的选择显示或隐藏GSP上的字段

c# - 从C#(WPF)程序向putty.exe实例发送命令

deployment - 使用Grunt和rsync将远程文件夹与本地文件夹同步

python-2.7 - Paramiko ssh输出停止在--more--

grails - Grails的浏览器历史记录?

ssh - ssh运行远程命令后未得到提示

session - 保持 session 状态

bash - 如何将本地文本文件传递给ssh命令?

gwt - 使GWT和Grails与Atmosphere插件一起工作