我试图一次读取一个40字节的二进制文件,然后检查所有这些字节是否为0x00,如果是,则忽略它们.如果没有,它会将它们写回另一个文件(基本上只是删除大块的空字节).
这可能不是最有效的方法,但我并不担心.但是,现在我收到了"错误的文件描述符"错误,我无法弄清楚原因.
my $comp = "\x00" * 40;
my $byte_count = 0;
my $infile = "/home/magicked/image1";
my $outfile = "/home/magicked/image1_short";
open IN, "<$infile";
open OUT, ">$outfile";
binmode IN;
binmode OUT;
my ($buf, $data, $n);
while (read (IN, $buf, 40)) { ### Problem is here ###
$boo = 1;
for ($i = 0; $i < 40; $i++) {
if ($comp[$i] != $buf[$i]) {
$i = 40;
print OUT $buf;
$byte_count += 40;
}
}
}
die "Problems! $!\n" if $!;
close OUT;
close IN;
Run Code Online (Sandbox Code Playgroud)
我标记了它正在破碎的评论.谢谢你的帮助!
您可能想检查是否open返回错误.
open IN, "<$infile" or die "Can't open $infile: $!";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9691 次 |
| 最近记录: |