%E3%82%A8%E3%83%A9%E3%83%BC.png)
'
./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");