Perlから「内部」を脱出する方法は?

Perlから「内部」を脱出する方法は?

次のスクリプトを使用していますが、予期しない出力が表示されます。

perl -pi -e '/DB_CHARSET/ and $_.="define('SOMETHING'/, true);\n"' file.txt

このコマンドは追加しますdefine(SOMETHING, true);

テキストが「で始まり、その中に」があるので、「SOMETHINGをエスケープしてで終わるようにするにはどうすればよいですかdefine('SOMETHING', true)

私はいつもの\を試しましたが、役に立ちませんでした。

ベストアンサー1

'それぞれをに変更できます'\''。しかし、これはすぐに醜くなる可能性があります。

より良いアイデアは、スクリプトにここでドキュメントを使用することです。

perl -pi - <<'EOT' file.txt
/DB_CHARSET/ and $_.="define('SOMETHING'/, true);\n"
EOT

周囲の引用符を参照してくださいEOT。 here 文書の終端が (単一引用符または二重引用符) 内にない場合、$開始変数、算術置換、バックティックなどは here 文書から拡張されます。これは、単一引用符のみが変数の拡張を防ぐPerlのここのドキュメントとは少し異なります。

おすすめ記事