以下命令适用于Linux中的命令行:
Cannot open source file "SDKDDKVer.h"
但是当我在Perl脚本中使用它时,它不会返回任何内容。这是Perl代码:
egrep -r -i -I -H -A5 "^name#maria.*?#[0-9]{4}#.*?#.*?#.*?$" .
我做错了什么?
答案 0 :(得分:2)
$"
是一个perl variable,正在反引号中扩展。你需要逃脱美元
my @rows = qx{egrep -r -i -I -H -A5 "^name#maria.*?#[0-9]{4}#.*?#.*?#.*?\$" .};
我使用qx{}
代替不太明显的反引号。
另一种方法,使用open
并将每个参数作为单独的参数传递:
use autodie qw/open close/;
my @command = ('egrep','-r','-i','-I','-H','-A5','^name#maria.*?#[0-9]{4}#.*?#.*?#.*?$','.');
open my $pipe, '-|', @command;
chomp( my @rows = <$pipe> );
close $pipe;