2016-04-05 16 views
0

Sağlanan yapılandırma temelinde normal txt dosyası oluşturuyorum, bu nedenle Control M'yi dosyadan kaldırmaya çalıştığımda hata veriyorPerl Komut Dosyası Kullanılarak oluşturulan dosyadan^M karakteri nasıl kaldırılır

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. 

Kod hattı:

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

Can herkes aynı için herhangi bir öneri var?

+0

Arama şablonunda ctll + V + M yazmayı deneyin (kontrolde bekletme) ve ardından yukarıdaki kod satırını çalıştırın. – Nagaraju

+0

Perl kodunu hangi platformda yürütüyorsunuz? Windows® Unix/Linux? – dolmen

cevap

2

Çift tırnak içinde çift tırnak içine giremezsiniz. Bunlardan biri yerine tek tırnak kullanın.

Perl'den arıyorsanız, dıştakiler için tek tırnak kullanın, aksi halde Perl \r ve \n'u arayacaktır. Ya da tekrar Perl'i çağırmadan aynı şeyi doğrudan yapan kodla değiştirin. Bunları kaldırmak için en iyi yer, dosyayı okuduğunuz yerde aynı olacaktır.

+1

Veri dosyasını gerçekten okuduğunuzda şaryo dönüşlerini kaldırmak muhtemelen daha anlamlı olacaktır. – tripleee

3

Muhtemelen OptionFile.txt bir Windows sisteminde oluşturuldu? Aksine açmadan önce yerine dosyayı düzenlemek için bir system çağrısı kullanmak yerine, size daha sonra

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

CR (kontrol-M yazarsanız dosyanın

doğru okunduğunda bu işlemek için muhtemelen daha iyidir) karakterleri,

numaralı girdilerde Perl tarafından kaldırılacaktır. Alternatif olarak, okuma döngünüzde zaten chomp varsa, bunu s/\R\z// ile değiştirebilirsiniz. \R, herhangi bir standart satır bitişiyle eşleşir ve bu nedenle CR LF'yi bir Windows dosyasından ayırır

İlgili konular