默认情况下,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