我有一堆使用此代码创建的文件:
use LWP::Simple;
my $xl = get("http://www.somewhere.com/file.xls");
open(my $outf, '>', "C:/file.xls") || die $!;
print $outf $xl;
直到最近我才意识到我应该在文件句柄中使用'>:raw'
而不仅仅是'>'
。所以现在我有一堆文件以某种方式被修改,阻止Excel打开它们。
我的问题是我是否可以使用Perl对这些文件进行处理以返回原始Excel文件。换句话说,是否有可能弄清楚我可以使用新的Perl脚本对文件进行哪些编辑?
答案 0 :(得分:5)
它将LF转换为CRLF。您只需将CRLF的任何实例更改回LF。
my $qfn_in = $qfn;
my $qfn_out = $qfn . ".new";
open(my $fh_in, '<:raw', $qfn_in ) or die $!;
open(my $fh_out, '>:raw', $qfn_out) or die $!;
while (<$fh_in>) {
s/\r\n\z/\n/;
print($fh_out $_);
}
或
my $qfn_in = $qfn;
my $qfn_out = $qfn . ".new";
open(my $fh_in, '<:raw:crlf', $qfn_in ) or die $!;
open(my $fh_out, '>:raw', $qfn_out) or die $!;
print($fh_out $_) while <$fh_in>;
如果你有dos2unix
,你也可以使用它。 (虽然JRFerguson说他的版本会破坏其中带有字符1A
的文件。)