2016-04-05 50 views
0

我基於提供的配置創建了正常的txt文件,因此當我試圖從文件中刪除Control M時,它給我的錯誤爲如何從使用Perl腳本在Fly上生成的文件中刪除^ M字符

syntax error at CreateConfig.pl line 141`, near `perl -p -i -e "s/\r\n/\n/g` 
Execution of `CreateConfig.pl` aborted due to compilation errors. 

代碼行:

system("perl -p -i -e "s/\r\n/\n/g" OptionFile.txt"); 

任何人都可以有相同的任何建議?

+0

在搜索模式中,嘗試編寫ctll + V + M(保持控制狀態),然後運行上面的代碼行。 – Nagaraju

+0

你在哪個平臺上執行perl代碼?視窗?的Unix/Linux呢? – dolmen

回答

2

你不能在雙引號內嵌套雙引號。使用單引號代替其中的一個。

如果您是從Perl調用它,請使用單引號作爲外部引號,否則Perl將插入\r\n。或者,將其替換爲直接執行相同操作的代碼,而無需再次調用Perl。刪除它們的最佳位置與讀取文件的位置相同。

+1

當您實際讀取數據文件時,刪除回車可能會更有意義。 – tripleee

3

推測OptionFile.txt已在Windows系統上創建?而不是使用system調用打開它之前編輯到位的文件,它可能是更好,當你從文件

讀你寫

open my $fh, '<:crlf', 'OptionFile.txt' or die $!; 

那麼CR(CONTROL-M來處理這個)字符將被Perl上的輸入刪除

或者,如果您在讀取循環中已經有chomp,則可以用s/\R\z//替換它。 \R與任何標準行結尾相匹配,因此會從Windows文件中剝離尾隨CR LF

相關問題