Perl代码-管道“ |” 在`open()`语句中

Aru*_*gal 0 perl file-io grep pipe while-loop

我在Perl .pl文件中有以下代码。您是否认为此代码有任何问题(我不明白它的工作方式,因为第二行中有一个“ |”字符,而后面没有命令)

while ( $temp ne "" ) {
        open( PS, "ps -ef | grep deploy.sh | grep ssh | grep -v grep|" );
        $temp = <PS>;
        close(PS);
        print "The Deploy scripts are still running.  Now sleeping 20\n";
        sleep 20;
}
Run Code Online (Sandbox Code Playgroud)

Mon*_*Kin 6

那个流浪 这是Perl所说的一种方式,您希望该命令的输出可用于您的程序。有几种等效形式。

在这里看看:open-perldoc.perl.org。特别是在行上说:

open(FOO, "cat -n '$file'|");
Run Code Online (Sandbox Code Playgroud)


ike*_*ami 5

open(my $FOO, "foo");
Run Code Online (Sandbox Code Playgroud)

打开文件进行阅读,而

open(my $FOO, "foo |");
Run Code Online (Sandbox Code Playgroud)

告诉 Perl 这foo是一个要运行的命令,其输出将通过管道传输到文件句柄$FOO