次の perl ワンライナーは、「連結 (.) または文字列で初期化されていない値 $1 を使用しています」というエラーをスローします。
`perl -pi.bak -e "if(!/#/){s/ PERFORM ([\\w*-]+)\.?/qq(# PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt`;
前もってありがとう、ファエズ
次の perl ワンライナーは、「連結 (.) または文字列で初期化されていない値 $1 を使用しています」というエラーをスローします。
`perl -pi.bak -e "if(!/#/){s/ PERFORM ([\\w*-]+)\.?/qq(# PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt`;
前もってありがとう、ファエズ
あなたのワンライナー:
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」を意味します。