-1

次の perl ワンライナーは、「連結 (.) または文字列で初期化されていない値 $1 を使用しています」というエラーをスローします。

`perl -pi.bak -e "if(!/#/){s/ PERFORM ([\\w*-]+)\.?/qq(#  PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt`;

前もってありがとう、ファエズ

4

1 に答える 1

1

あなたのワンライナー:

perl -pi.bak -e "if (!/#/) { 
    s/ PERFORM ([\\w*-]+\.?/   # HERE
        qq(#  PERFORM $1.\n) . q($hash{$1})/eg;}" TestFinal.txt

次のエラーがあります。

  • HERE でマークされた閉じ括弧がありません。
  • %hashこのワンライナーのどこにも定義されていません。
  • q($hash{$1})変数を補間しません。qq()ただし、します。

考えられること:

  • /#/行内の任意の場所でトリガーされるため、より正確な一致を#検討できます。/^\s*#/
  • 使用上の警告:-we
  • \\w\w文字クラス内では、 (英数字)ではなく、「バックスラッシュまたは w」を意味します。
于 2012-09-06T11:11:57.313 に答える