我的 Perl 脚本运行一个系统命令,我希望脚本的其余部分以字符串形式输出,如何实现?

My Perl Script runs a system command, I want the output as a string for the rest of the script, how can this be accomplished?

例如,如果我的脚本如下:

#! /bin/perl
use strict;
use warnings;

system('echo schwifty')

-我怎样才能将我的终端 (schwifty) 上的输出转换成一个字符串,我可以继续使用我的脚本?

注意:"echo" 仅作为示例给出,我正在使用其他打印到屏幕的命令。

要捕获外部命令的输出,请使用反引号或 qx:

my $output = qx{echo schwifty};
die unless $output =~ /schw/;

对于多行系统调用,例如ls,我倾向于使用@array 来存储输出。当有很多行要处理时,比变量更灵活。

与 choroba 的示例非常相似,但进一步扩展。

my @output = qx{ ls -l };

foreach my $line ( @output )
{
    # process each $line here
    print "$line";
}