如何从Perl中的任意文件类型读取数据?

时间:2010-11-05 00:45:19

标签: windows perl file file-io

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

文件可以是任何仲裁类型(.exe,.txt,无扩展等),但从我所知道的,有一种非二进制方式来读取文件,以及特定的二进制方式(使用binmode),似乎如果你不恰当地使用它们的错误类型,它可能会破坏你的文件(至少在Windows上?)

是否有一种灵活的方式读取文件的内容而不必担心它有什么样的数据?

2 个答案:

答案 0 :(得分:7)

read模式下打开文件句柄后,将binmode应用于该文件句柄。

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

答案 1 :(得分:3)

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

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

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