我有一個文件,下面的文字:如何處理在Perl餅特殊字符查找替換
prompt **********************************************************************************
prompt ** Start
prompt **********************************************************************************
prompt **
prompt ** Calling: FILE
prompt **
prompt **
@@FOLDER\FILE
prompt **
prompt ** commit
commit;
prompt **
prompt **
prompt **
prompt **********************************************************************************
prompt ** End
prompt **********************************************************************************
當我做
$ perl -pi -e "s/FILE/$file/g" ./tmp.sql;
它取代Word文件的所有實例與任何我有在$文件,但當我打電話
$ perl -pi -e "s/FOLDER/$folder/g" ./tmp.sql;
哪些只是有文件夾字符串,它咳嗽起來,並不取代埃斯特hing和我叫它吐出這個東西的外殼:
Execution of -e aborted due to compilation errors.
Unquoted string "g" may clash with future reserved word at -e line 1.
Unknown regexp modifier "/R" at -e line 1, at end of line
Unknown regexp modifier "/F" at -e line 1, at end of line
Unknown regexp modifier "/5" at -e line 1, at end of line
Unknown regexp modifier "/4" at -e line 1, at end of line
Unknown regexp modifier "/7" at -e line 1, at end of line
Unknown regexp modifier "/5" at -e line 1, at end of line
Unknown regexp modifier "/6" at -e line 1, at end of line
Unknown regexp modifier "/_" at -e line 1, at end of line
Unknown regexp modifier "/2" at -e line 1, at end of line
任何人都知道什麼給了?嵌入在folder
可變
'$ folder'中有什麼?你沒有把'$ folder'的值直接傳給Perl;您正在動態構建一個要執行的Perl表達式。如果'$ folder'的值中有(可能是)'/',那麼會終止'''表達式,不會被視爲替換文本的一部分。 – chepner
是的,它有一個正斜槓,我修改了文件夾的值,並修復了它。謝謝 – sloven
更改「文件夾」的值可能並不總是可能的;請參閱我的答案,以更改Perl代碼,該代碼對於任何*文件夾的*值都是安全的。 – chepner