在Perl中打开和读取文件的最好方法是什么?

前端之家收集整理的这篇文章主要介绍了在Perl中打开和读取文件的最好方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请注意 – 我不是在寻找“正确”的方式来打开/读取文件,或者我应该打开/读取文件的方式每一次。我只是想知道大多数人使用的方式,或许可以同时学习一些新的方法:)*

在我的Perl程序中一个非常常见的代码块是打开一个文件并读取或写入它。我已经看到了这么多的方式这样做,我执行这项任务的风格已经改变了几年了。我只是想知道什么最好的(如果有一个最好的方法)方法是这样做?

我曾经打开过这样的文件

my $input_file = "/path/to/my/file";
open INPUT_FILE,"<$input_file"  || die "Can't open $input_file: $!\n";

但我认为有错误陷阱的问题。

添加括号似乎修复错误陷阱:

open (INPUT_FILE,"<$input_file")  || die "Can't open $input_file: $!\n";

我知道你也可以分配一个文件句柄到一个变量,因此,而不是像我上面的使用“INPUT_FILE”,我可以使用$ input_filehandle – 是更好的方式?

对于读取文件,如果它很小,globbing有什么问题,像这样?

my @array = <INPUT_FILE>;

要么

my $file_contents = join( "\n",<INPUT_FILE> );

或者你应该总是循环,像这样:

my @array;
while (<INPUT_FILE>) {
  push(@array,$_);
}

我知道有这么多方法来完成perl的事情,我只是想知道是否有首选/标准的方法打开和阅读文件

解决方法

没有普遍的标准,但有理由更喜欢彼此。我的首选形式是:
open( my $input_fh,"<",$input_file ) || die "Can't open $input_file: $!";

原因是:

>您立即报告错误。 (如果你想要的,用“warn”替换“die”。)
>你的文件句柄现在被引用计数,所以一旦你不使用它,它会自动关闭。如果使用全局名称INPUT_FILEHANDLE,则必须手动关闭文件,否则它将保持打开,直到程序退出
>读取模式指示符“<”与$ input_file分开,增加了可读性。
以下是伟大的,如果文件是小,你知道你想要所有的行:

my @lines = <$input_fh>;

你甚至可以这样做,如果你需要处理所有行作为一个单一的字符串:

my $text = join('',<$input_fh>);

对于长文件,您将要使用while迭代线,或使用读。

猜你在找的Perl相关文章