$s =~ s/(id=")(".*)/$1123$2/; # Use of uninitialized value $1123 in concatenation (.) or string
の代わりになると期待していましたが$1
、perlはそれを変数と見なします$1123
。Perlには、あなたが意図したことを知る方法がありません$1
。したがって、次のように指定して、変数化をに制限する必要があります。$1
${1}
$s =~ s/(id=")(".*)/${1}123$2/;
スクリプトの先頭に次のものを含めることをお勧めします。彼らはあなたに多くの時間と労力を節約します。
use strict;
use warnings;
たとえば、上記のモジュールを含めてスクリプトを実行すると、エラーメッセージが表示されます。
Use of uninitialized value $1123 in concatenation (.) or string at /tmp/test.pl line 7.
(報告されたスクリプト名と行番号は無視してください。)Perlが何を期待していたかを明確に示しています。
後読みおよび先読みアサーションを使用する別のアプローチ:
$s =~ s/(?<=id=")(?=")/123/;