在perl中连接linux命令中的变量

在perl中连接linux命令中的变量,linux,perl,unix,Linux,Perl,Unix,我需要使用一个系统命令(grep),它有一个与字符串连接的变量作为正则表达式来搜索文件。 在Perl中,是否可以在变量和字符串之间连接grep的正则表达式 我尝试过使用操作符,但它不起作用 if(`grep -e "$fubname._early_exit_indicator = 1" $golden_path/early_exit_information.tsv`){ print "-D- The golden data indicates early exit should occu

我需要使用一个系统命令(
grep
),它有一个与字符串连接的变量作为正则表达式来搜索文件。 在Perl中,是否可以在变量和字符串之间连接
grep
的正则表达式

我尝试过使用
操作符,但它不起作用

if(`grep -e "$fubname._early_exit_indicator = 1" $golden_path/early_exit_information.tsv`){
    print "-D- The golden data indicates early exit should occur\n";
    $golden_early_exit_indicator=1;
}
预期与正则表达式匹配,
“$fubname.\u early\u exit\u indicator=1”
,但不符合要求。 预期结果应该是:
-D-黄金数据表明应该提前退出
但在目前的代码中,它不打印这个


输出链接:()

问题在于,
运算符未被识别为引号内的运算符。点运算符用于字符串之间,而不是字符串内部。使用字符串中的点,逐字插入。模式中的这个文字点会导致代码中的
grep
命令失败

还要注意,在引号中,Perl尝试使用某些标识符解析规则插入变量。 有关Perl中使用的不同类型的引用,请参阅,有关标识符解析规则的信息,请参阅

总之,要在backticks参数中插入变量
$fubname
,请使用

"${fubname}_early_exit_indicator = 1"

请注意,标识符周围需要大括号,因为下面的下划线是有效的标识符字符。(相反,文字点不是有效的标识符字符,因此,如果后面的字符是文字点,则不需要在标识符周围使用大括号。)

。运算符将不会在引号内工作。用这样的东西-

如果(`grep-e“${fubname}\u early\u exit\u indicator=1”


我希望在这里能起作用,$fubname是我的变量,我正在尝试将_early_exit_指示符字符串连接到它。使用
${fubname}${u early_exit_指示符
:“就像在某些shell中一样,可以将变量名括在大括号中,以消除它与以下字母数字(和下划线)之间的歧义。”另一种方法是转义字符串以将其与变量名分隔:
“$fubname\\u early\u exit\u indicator=1”