如何摆脱Perl中的命令式文件打开?

Tim*_*Tim 5 perl file-io

open( my $handle, '<', 'file.dat' ) or die $!;
my @data = map { do_things($_) } <$handle>;
close $handle;
Run Code Online (Sandbox Code Playgroud)

这个命令式openclose上面的内容在其他好的代码中就像一个眼睛.有没有办法以更清洁的方式写这个?我可以编写自己的read_file子程序,但应该有类似的东西.

sub read_file {
    open( my $handle, '<', $_[0] ) or croak $!;
    return <$handle>;
}
my @data = map { do_things($_) } read_file('file.dat');
Run Code Online (Sandbox Code Playgroud)

效率并不重要,但解决方案应该是跨平台的.

Ale*_*lex 13

免费处理,使用File :: Slurp:

use File::Slurp;
my @data = map {...} read_file($filename);
Run Code Online (Sandbox Code Playgroud)