如何将小文本文件的内容读入Perl中的标量?

Bil*_*ard 10 perl file-io

我有一个小文本文件,我想读入一个标量变量,就像它在文件中一样(保留行分隔符和其他空格).

Python中的等价物就像是

buffer = ""

try:
    file = open("fileName", 'rU')
    try:
        buffer += file.read()
    finally:
        file.close()
except IOError:
    buffer += "The file could not be opened."
Run Code Online (Sandbox Code Playgroud)

这只是为了简单地重新显示网页上文件的内容,这就是我的错误信息进入我的文件缓冲区的原因.

gpo*_*ojd 19

Perl Cookbook:

my $filename = 'file.txt';
open( FILE, '<', $filename ) or die 'Could not open file:  ' . $!;

undef $/;
my $whole_file = <FILE>;
Run Code Online (Sandbox Code Playgroud)

我会将这些变化本地化:

my $whole_file = '';
{
    local $/;
    $whole_file = <FILE>;
}
Run Code Online (Sandbox Code Playgroud)


Pow*_*ord 18

作为替代亚历克斯说,你可以安装文件:: Slurp的模块(cpan -i File::Slurp命令行),并使用此:

use File::Slurp;
# Read data into a variable
my $buffer = read_file("fileName");
# or read data into an array
my @buffer = read_file("fileName");
Run Code Online (Sandbox Code Playgroud)

注意这个dies(嗯...... croak,但这只是从模块调用die的正确方法)出错,所以你可能需要在eval块中运行它来捕获任何错误.


dra*_*tun 15

如果我附近没有SlurpPerl6 :: Slurp,那么我通常会跟....

open my $fh, '<', 'file.txt' or die $!;

my $whole_file = do { local $/; <$fh> };
Run Code Online (Sandbox Code Playgroud)