【问题标题】:Why do I get "Bad File Descriptor" when I try to read a file with Perl?当我尝试使用 Perl 读取文件时,为什么会得到“错误的文件描述符”?
【发布时间】:2010-04-28 14:19:20
【问题描述】:

我正在尝试一次读取 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;

我用评论标记了它正在破坏的地方。感谢您的帮助!

【问题讨论】:

标签: perl filehandle


【解决方案1】:

您可能想检查open 是否没有返回错误。

open IN, "<$infile" or die "Can't open $infile: $!";

【讨论】:

  • 多么尴尬……是的,这就是问题所在。现在已修复。谢谢!
猜你喜欢
  • 2016-08-26
  • 2021-09-14
  • 1970-01-01
  • 2012-03-12
  • 2012-08-01
  • 2020-05-05
  • 1970-01-01
  • 2015-09-25
  • 2013-07-28
相关资源
最近更新 更多