【发布时间】:2017-04-23 13:47:04
【问题描述】:
我需要用// 替换文件中每个出现的http://。该文件可能(至少)位于UTF-8、CP1251 或CP1255。
以下是否有效?
use File::Slurp;
my $Text = read_file($File, binmode=>':raw');
$Text =~ s{http://}{//}gi;
write_file($File, {atomic=>1, binmode=>':raw'}, $Text);
这似乎是正确的,但我需要确保文件不会被损坏,无论它有什么编码。请帮我确定一下。
【问题讨论】:
-
我们好像没有 UTF-16 或 UTF-32 文件
-
您的代码中有错字。它不会使用错误的模块名称进行编译。请解决这个问题。
-
你事先知道每个文件的编码吗?
-
我认为简单的
perl -pi -e's{http://}{//}gi'就足够了。 -
我添加了 binmode=>':raw'。现在看来是正确的