私はPerlの初心者です。私は以下のPerlコマンドを使って自分のtclスクリプトの "/ $"シーケンスを検索して置き換えています。これはうまくいきます。linuxコマンドラインで直接使用するとうまくいきます。Perl検索と置換コマンドが別のPerlスクリプトの中から呼び出されたときに動作しない
perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl
私は唯一の「`」バックティックとし、システムコマンドを使用して別のPerlスクリプトでPerlの上記ワンライナーを呼び出すために呼び出しています。
system(`perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl`);
`perl -p -i -e 's/\/\$/\/\\\$/g' sed_list.tcl`;
私は下のエラーが発生しています。この問題でお手伝いください。
Bareword found where operator expected at -e line 1, near "$/g"
(Missing operator before g?)
Final $ should be \$ or $name at -e line 1, within string
syntax error at -e line 1, near "s//$/"
Execution of -e aborted due to compilation errors.
私は分離のために「%」演算子を使用すると、私はエラーが、ジョブが実行されていない表示されませんでした、私はちょうどSEDのコマンドのように%や#などの他の分離演算子を使用することができるかどうか知らないけど。
`perl -p -i -e 's%\/\$%\/\\\$%g' sed_list.tcl`;
ウェブ上のこの特定の問題については、十分な結果が得られませんでした。どんな助けもありがとうございます。
http://stackoverflow.com/questions/619926/should-i-escape-shell-arguments-in-perl – xxfelixxx
なぜシステムコマンドでバックティックを使用していますか? '' system( "") 'のように' '' 'を使うべきです。 – serenesat
ご返信ありがとうございます。 システム( "perl -p -i -e '/ \/\ $/\/\\\ $/g' sed_list.tcl"); これは私がすでに試したものですが、使用していません。私はまだ同じエラーが発生します。修正を提案してください。私はあなたに試してみよう – Sridhar