相关疑难解决方法(0)

为什么使用自动生成文件句柄的三参数打开调用是Perl的最佳实践?

我有两个关于Perl open函数的问题:

1)我似乎记得Perl最佳实践中的3参数版本open比两个参数版本更好,例如

open(OUT, '>>', $file);
Run Code Online (Sandbox Code Playgroud)

open(OUT, ">>$file");
Run Code Online (Sandbox Code Playgroud)

这是为什么?我试图告诉别人前几天使用3参数版本,但似乎无法用任何东西支持它.

2)我似乎还记得autovivified文件句柄比bareword文件句柄更受青睐(他们称之为不同的东西)?而且也记不住为什么,例如

open(my $out, '>>', $file);
Run Code Online (Sandbox Code Playgroud)

open(OUT, '>>', $file);
Run Code Online (Sandbox Code Playgroud)

这是strict件事吗?我似乎记得能够使用OUT,strict但我不记得了.

perl file-io scope

45
推荐指数
3
解决办法
6055
查看次数

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

请注意 - 我不是在寻找打开/读取文件的"正确"方式,也不是每次都打开/读取文件的方式.我只是想知道大多数人使用的方式,并且可能同时学习一些新方法:)*

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

我以前打开这样的文件:

my $input_file = "/path/to/my/file";
open INPUT_FILE, "<$input_file"  || die "Can't open $input_file: $!\n";
Run Code Online (Sandbox Code Playgroud)

但我认为错误捕获存在问题.

添加括号似乎可以修复错误捕获:

open (INPUT_FILE, "<$input_file")  || die "Can't open $input_file: $!\n";
Run Code Online (Sandbox Code Playgroud)

我知道你也可以给一个变量分配一个文件句柄,所以不像我上面那样使用"INPUT_FILE",我可以使用$ input_filehandle - 这样更好吗?

对于读取文件,如果它很小,那么globbing有什么问题吗?

my @array = <INPUT_FILE>;
Run Code Online (Sandbox Code Playgroud)

要么

my $file_contents = join( "\n", <INPUT_FILE> );
Run Code Online (Sandbox Code Playgroud)

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

my @array;
while (<INPUT_FILE>) {
  push(@array, $_);
}
Run Code Online (Sandbox Code Playgroud)

我知道有很多方法可以在perl中完成任务,我只是想知道在文件中是否有打开和读取的首选/标准方法?

io perl file perl-io

44
推荐指数
8
解决办法
6万
查看次数

标签 统计

perl ×2

file ×1

file-io ×1

io ×1

perl-io ×1

scope ×1