PerlのSystem()エラー

PerlのSystem()エラー

'

./scripttemp.perl の 5 行目の演算子の近くにある数字 sed -i -r "4" を検索します (4 以前に演算子が欠落していますか?)。/scripttemp.perl の 5 行目の "}"演算子の近くにあります。 error.txt""が演算子で見つかりました( "error.txt"の前に演算子がありませんか?)。/scripttemp.perl行5" "sed -i -r "4"の近くに構文エラーがあります。 perl 構文エラー "s/[ -.*-]//g}" 行 5 付近のコンパイルエラーのため、./scripttemp.perl の実行が中断されました。 '

スクリプトを実行すると、次のエラーが発生します。

**#!/usr/bin/perl
use warnings;
use strict;
exec("sed -i -r "4{s/\{\+//; s/\+}//; s/\[-.*-]//g}" error.txt");**

何が問題なのか教えてください。

答え1

これは二重引用符の使用による問題です。エスケープしない限り、二重引用符「内部」には二重引用符を使用できません。代わりに二重引用符をエスケープするか、引用符の代わりに一重引用符を使用することをお勧めします。

#!/usr/bin/perl
use warnings;
use strict;
exec("sed -i -r '4{s/\{\+//; s/\+}//; s/\[-.*-]//g}' error.txt");

関連情報