2016-04-05 12 views
0

標準設定のtxtファイルを作成していますので、ファイルから制御Mを削除しようとしているときにエラーが発生しますフライでPerlスクリプトを使用して生成されたファイルから^ 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コードを実行していますか? Windows? Unix/Linux? – dolmen

答えて

2

doublequoteの中に二重引用符をネストすることはできません。それらの1つではなく、単一引用符を使用してください。

Perlから呼び出す場合は、外側のものを一重引用符で囲みます。そうでない場合、Perlは\r\nを補間します。あるいは、Perlを再度呼び出さずに同じコードを直接実行するコードに置き換えてください。それらを削除する最も良い場所は、ファイルを読む場所と同じです。

+1

実際にデータファイルを読み取ったときにキャリッジリターンを削除するほうがおそらく適切でしょう。 – tripleee

3

おそらくOptionFile.txtはWindowsシステムで作成されていますか?むしろそれを開く前に、場所にファイルを編集するsystem呼び出しを使用するよりも、あなたが、その後

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

CR(コントロール-M書く場合、ファイル

から読んだとき、これを処理するために、おそらくより良いです)文字は入力時にPerlによって削除されます

また、すでに読んだループにchompがある場合は、それをs/\R\z//に置き換えることができます。 \Rはすべての標準行の終わりと一致し、Windowsファイルから末尾のCR LFを取り除きます

関連する問題