我的以下perl one-liner会引发错误“在连接(。)或字符串中使用未初始化的值$ 1”
`perl -pi.bak -e "if(!/#/){s/ PERFORM ([\\w*-]+)\.?/qq(# PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt`;
先谢谢, Faez
答案 0 :(得分:1)
你的单行:
perl -pi.bak -e "if (!/#/) {
s/ PERFORM ([\\w*-]+\.?/ # HERE
qq(# PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt
有以下错误:
%hash
未在此单行中的任何位置定义。q($hash{$1})
不会插入变量。但是,qq()
会。您可以考虑的事项:
/#/
会在该行的任意位置触发#
,您可以考虑/^\s*#/
进行更精确的匹配。-we
\\w
表示“反斜杠或w”,而不是\w
(字母数字)。