VMSのテキストファイルの特定の行を置き換えようとしています。通常、これはPerlを使用した単純なワンライナーです。しかし、置換側がVMSパスを含むシンボルである場合に問題が発生しました。これがファイルと私が試したことです:
file1.txtの内容:
foo
bar
baz
quux
3行目を置き換えてみてください:
$ mysub = "disk$data1:[path.to]file.txt"
$ perl -pe "s/baz/''mysub'/" file1.txt
次の出力が得られます。
foo
bar
disk:[path.to]file.txt
quux
Perlは熱心$data1
で、パスの一部を存在しない変数の内容(つまり、何もない)に置き換えたようです。デバッガーで実行すると、それが確認されました。私は提供しなかった/e
ので、Perlはテキストをそのまま置き換える必要があると思いました。Perlにそれをさせる方法はありますか?
(Linuxコマンドラインでも同様の動作を再現できることに注意してください。)