【问题标题】:How can I read data from an arbitrary file type in Perl?如何从 Perl 中的任意文件类型读取数据?
【发布时间】:2011-05-05 09:37:09
【问题描述】:

我正在尝试读取文件的内容,以便可以将其提交到数据库(我不需要解析数据,也不在乎它说什么)。

文件可以是任何任意类型(.exe、.txt、无扩展名等),但据我所知,有一种读取文件的非二进制方式和一种特定的二进制方式(使用binmode),并且似乎如果您将它们不恰当地用于错误的类型,它可能会破坏您的文件(至少在Windows上?)

有没有一种巧妙的方式来读取文件的内容,而不必担心它有什么样的数据?

【问题讨论】:

  • 只使用二进制模式就可以了。
  • 谢谢。我误解了一些文档,这可能与 leolo 谈论的是同一件事。我不需要解释或解析任何东西,所以我不需要担心换行符的问题。

标签: windows perl file file-io


【解决方案1】:

read 模式下打开文件句柄后,对其应用binmode

open my $fh, '<', '/path/to/file' or die "Error while opening: $!";
binmode $fh;

【讨论】:

    【解决方案2】:

    艾伦的回答是正确的。即使文件是“文本”,您要处理的文件也像任何其他文件一样是二进制文件。它不会“破坏”您的文件。

    但是,当需要将您的文本文件作为文本文件处理(显示、处理等)时,您可能需要对其执行s/\x0D?\x0A/\n/g; s/\x0D/\n/g;。这会将 Mac、Windows 和 Unix 换行符变成当前系统的换行符。

    如果你能提供更多关于你在做什么的背景,也许你能得到更好的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-02
      • 2023-03-04
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 2013-12-14
      相关资源
      最近更新 更多