Varsayılan olarak, win32 ortamında perl \ r \ n yazdırır. Bunu nasıl geçersiz kılabilirim? Bir depodaki bazı kaynak kodlarında bazı değişiklikler yapmak için perl kullanıyorum ve tüm yeni satır karakterlerini değiştirmek istemiyorum.Win32 üzerinde Perl'de bir unix newline'ı nasıl yazdırabilirim?
Çıkış kayıt ayırıcısını değiştirmeyi denedim, ancak şanssız.
Teşekkürler!
Düzenleme: bir kod örneği içerecek şekilde Wanted - Bir arama yapıyorum ve böyle nispeten basit bir modeli takip bazı dosyaları üzerinde değiştirin: Bu "herhangi örneklerini değiştirmek gerekir
#!/usr/bin/perl
# test.pl
use strict;
use warnings;
$/ = undef;
$\ = "\n";
$^I=".old~";
while (<>) {
while (s/hello/world/) {
}
print;
}
merhaba cmd satırında geçen tüm dosyalar için "with" world ".
Düzenleme 2: Herhangi bir şans başlangıçta olmadan önerdiği gibi Ben binmode
çalıştı. Biraz daha fazla inceledim ve $^I
(inplace özel değişkeni düzenle) öğesinin binmode
'u geçersiz kıldığını gördüm. Herkese yerinde düzenleme yapmak için herhangi bir iş var mı?
Düzenleme 3: Sinan aşağıda işaret gibi benim örnekte $^I
yerine binmode STDOUT
ile binmode ARGVOUT
kullanmak gerekiyordu. Teşekkürler.
Çıkış kayıt ayırıcısını değiştirdiyseniz, yapabileceğiniz tek şey buydu. Sanırım başka bir hata yaptınız (aslında gelen satırları doğru bir şekilde bölmeksizin ya da onları ezmemek gibi). –
Bunu istemediğinizde '\ r \ n' yazdıran bir kod örneği verebilir misiniz? – Ether
@Sinan, neden isteksiz olduğumu varsayalım? Ben isteksiz değilim. Elimde kısa bir senaryo yok. Muhtemelen çok fazla mantıklı olmayacak ve daha da kafa karıştırıcı olabilecek çok uzun ve karmaşık bir senaryom var. Bu gece daha sonra kısaltılmış bir versiyon yapabilirim. İlgili bölümleri dahil ettiğimi düşündüm. Düzenlemenin o tarihte alakalı olduğunu bilmiyordum. Teşekkürler. –