Perl スクリプト内で perl ワンライナーを呼び出しています。
ワンライナーの意図は、ファイルから末尾のスペースを削除することです。
メインの perl スクリプト内:
`perl -pi -e 's/\s+$//' tape.txt`;
今、それは私にエラーを投げていますSubstitution replacement not terminated at -e line 2.
どこが悪いのでしょうか?
Perl スクリプト内で perl ワンライナーを呼び出しています。
ワンライナーの意図は、ファイルから末尾のスペースを削除することです。
メインの perl スクリプト内:
`perl -pi -e 's/\s+$//' tape.txt`;
今、それは私にエラーを投げていますSubstitution replacement not terminated at -e line 2.
どこが悪いのでしょうか?
これは$/
、メインの perl スクリプト内の (特殊変数) が原因です。変数は、文字``
列内と同じように文字列内で補間されることに注意してください""
。そこに単一引用符がいくつかあるという事実は、それを変更しません。それをエスケープする必要があります$
:
`perl -pi -e 's/\s+\$//' tape.txt;`
バックティック構文はシェルを呼び出し、呼び出されると、シェルは渡された文字列を補間する必要があると想定します。
よりクリーンな構文は次のようになります。
system('perl -pli -e "s/\s*$//" tape.txt');
コマンドの出力をキャプチャしていないため、バッククォートを使用したりqx
、代わりに使用したりするsystem
ことは問題ではありません。
また、スイッチを追加すると-l
、読み取られた各行がオートチョップされ、改行が追加されます---おそらくあなたが望むものです。