打破包含正在执行的系统命令的长行的最佳方法是什么? `"
示例:
my @data = `cat data.txt | perl -ne '/CTX:|ed-as-of time:\\s+(\\w+)\\s+[Feb|Mar|April|May]/ && print' | sed '\$!N;/Sync/P;D'|sed 'N;s/\\n/ /'`;
我尝试使用" `&#34。如下所示,但是收到错误(sh:1:语法错误:文件结束意外:)。
my @data = `cat data.txt | `.
`perl -ne '/CTX:|ed-as-of time:\\s+(\\w+)\\s+[Feb|Mar|April|May]/ && print' | sed '\$!N;/Sync/P;D'|sed 'N;s/\\n/ /'`;
答案 0 :(得分:4)
最好的方法是在标量变量中组装命令
$cmd = "command1 --foo --bar | command2 2>log.err | "
. " command3 --are-we-done-yet | ...";
@data = `$cmd`; # or @data = qx($cmd)
或将其组合为readpipe
@data = readpipe("command1 --foo --bar | command2 >log.err | "
. "command3 --are-we-done-yet | ...");