我的以下 perl 单行程序抛出错误“在连接 (.) 或字符串中使用未初始化的值 $1”
`perl -pi.bak -e "if(!/#/){s/ PERFORM ([\\w*-]+)\.?/qq(# PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt`;
提前致谢, Faez
我的以下 perl 单行程序抛出错误“在连接 (.) 或字符串中使用未初始化的值 $1”
`perl -pi.bak -e "if(!/#/){s/ PERFORM ([\\w*-]+)\.?/qq(# PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt`;
提前致谢, Faez
你的单行:
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
(字母数字)。