默認情況下,perl在win32環境中打印\ r \ n。我怎樣才能覆蓋這個?我使用perl對存儲庫中的某些源代碼進行了一些更改,並且我不想更改所有換行符。如何在Win32上打印Perl中的unix換行符?
我試着改變輸出記錄分隔符,但沒有運氣。
謝謝!
編輯:希望包括一個代碼示例 - 我正在做一個搜索和替換在遵循一個相對簡單的模式是這樣的一些文件:
#!/usr/bin/perl
# test.pl
use strict;
use warnings;
$/ = undef;
$\ = "\n";
$^I=".old~";
while (<>) {
while (s/hello/world/) {
}
print;
}
這應該取代「任何情況下,你好「在cmd行傳遞的任何文件都帶有」world「。
編輯2:我試過binmode
因爲沒有任何的運氣最初建議。我鑽了一些,發現$^I
(就地編輯特殊變量)被覆蓋binmode
。任何工作仍然可以使用就地編輯?
編輯3:作爲思南低於所指出的,我需要在我的例子使用binmode ARGVOUT
與$^I
,而不是binmode STDOUT
。謝謝。
如果更改了輸出記錄分隔符,那麼這是您唯一能做的事情。我猜你會犯一些其他的錯誤(比如沒有正確地分割輸入的行,或者不嚼它們)。 – 2009-11-30 16:02:08
你可以舉一些當你不需要時打印'\ r \ n'的代碼的例子嗎? – Ether 2009-11-30 16:58:16
@Sinan,你爲什麼會認爲我不願意?我不是不願意。我沒有簡短的腳本。我有一個非常長,複雜的腳本,可能不會有很大的意義,會更混亂。今晚晚些時候我可以製作一個縮略版。我認爲我包括了相關的部分。我不知道當時的編輯是否相關。謝謝。 – 2009-11-30 20:54:47