gpt4 book ai didi

perl - 如何在 Perl 程序中复制二进制文件

转载 作者:行者123 更新时间:2023-12-04 21:54:31 25 4
gpt4 key购买 nike

我有下面的 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);

但是这个版本的代码,输出二进制文件的大小比输入二进制文件的大小要大,因为这个 perl 代码似乎在输入文件中的 0x0A(换行符)字符之前添加了一个 0x0D(回车)字符,它不是已经在那了。

如果我使用 chomp ,则即使存在有效的 0x0A 字符也会将其删除,并且不会将它们放入输出文件中。

1]如何在上面的代码中解决这个问题。

2] 如何使用 File::Copy 模块解决这个问题,任何示例代码片段都会很有用。

谢谢你。

-广告

最佳答案

始终使用三参数 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: $!"

但是, File::Copy 太容易使用了,我不明白你为什么不这样做。
use File::Copy;

copy($in, $out) or die "Copy failed: $!";

关于perl - 如何在 Perl 程序中复制二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com