我有以下Perl代码来制作我拥有的二进制文件的副本.
$in = "test_file_binary.exe";
$out = "test_out_binary.exe";
open(IN,$in) || die "error opening ip file: $!" ;
open(OUT,">$out") || die "error opening op file: $!" ;
while(<IN>)
{
#chomp;
print OUT $_;
}
close(IN);
close(OUT);
Run Code Online (Sandbox Code Playgroud)
但是这个版本的代码,输出二进制文件的大小比输入二进制文件大小大,因为这个perl代码似乎在输入文件中的0x0A(换行符)字符之前添加了一个0x0D(回车符)字符,它不是已经在那了.
如果我使用chomp,那么即使存在有效的0x0A字符也会将其删除,并且不会将它们放在输出文件中.
1]如何在上面的代码中修复此问题.
2]如何使用File :: Copy模块解决这个问题,任何示例代码剪辑都会很有用.
谢谢.
-广告
eph*_*ent 12
总是使用三个arg open.
open IN, '<:raw', $in or die "Couldn't open <$in: $!";
open OUT, '>:raw', $out or die "Couldn't open >$out: $!";
my ($len, $data);
while ($len = sysread IN, my $data, 4096) {
syswrite OUT, $data, $len;
}
defined $len or die "Failed reading IN: $!"
Run Code Online (Sandbox Code Playgroud)
但是,File::Copy这么容易使用我不明白为什么你不会.
use File::Copy;
copy($in, $out) or die "Copy failed: $!";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2740 次 |
| 最近记录: |