如何在perl中的数组中远程存储命令的输出

时间:2014-07-23 07:15:07

标签: perl

我知道之前已经提出过这样的问题,但我想我可能已经迷失了,试图理解答复中提供的例子。所以我再次在这里问。

我必须从远程计算机上的特定文件夹中收集文件列表(仅限绝对文件名)。

在我的Linux机器上:

opendir - 在本地工作。我希望它能够远程工作。

use Net::FTP - 可以正常工作但FTP已禁用。

use Net::SFTP - 可以正常工作但是没有安装Net :: SFTP。

我想要一些方法来获取此信息,因为我必须使用sftp或ssh。

my $cmd = "ssh user\@host 'find x/y/z -type f'";
my @expectedOutputHere = system($cmd);

$expectedOutputHere不包含文件列表(作为输出)。 一旦我有输出,我打算使用File :: Basename :: basename来获取绝对名称。但是,我如何首先在数组中收集输出?

2 个答案:

答案 0 :(得分:4)

my @expectedOutputHere = `$cmd`;

manual说:The collected standard output of the command is returnedIn list context, returns a list of lines

对于system(),手册指定:The return value is the exit status of the program

答案 1 :(得分:1)

试试这个:

my $cmd = "ssh user\@host 'find x/y/z -type f'";
my @expectedOutputHere = `$cmd`;
chomp(@expectedOutputHere);
print Dumper @expectedOutputHere;