Perl将文件内容直接读入内存,这对吗?

Perl将文件内容直接读入内存,这对吗?,perl,Perl,这很明显,但我想和你商量一下 因此,我有以下perl模块: use strict; use warnings; use File::Slurp; my @list = read_file_subroutine(); my %hash = map {$_ => 1} @list; sub does_list_contain_smth() { my ($self, $data) = @_; if ($hash($data)) { return 1;

这很明显,但我想和你商量一下

因此,我有以下perl模块:

use strict;
use warnings;
use File::Slurp;


my @list = read_file_subroutine();

my %hash = map {$_ => 1} @list;

sub does_list_contain_smth() {
    my ($self, $data) = @_;
    if ($hash($data)) {
       return 1;
    }
    return 0;
}

sub get_list() {
    return \@list;
}

sub read_file_subroutine {
    my $file = "/some/file/path/file.txt";
    my $content = read_file($file);
    my @list = split "\n", $content;
    return \@list

1;
我说的
read\u file\u子例程
只调用一次,文件内容将被放入内存,对吗?

是的

read\u file\u子例程将只调用一次。只有一个调用,它不在任何循环中,也不是一个多次调用的子循环

读取文件
会将整个文件读取到内存中。报告第一句:

此函数读入整个文件并将其内容返回给调用方


你的代码到处都是。为什么您认为需要一个函数来获取数组的值?你在写模块吗?您不需要重写
read_file
函数,如果您阅读文档,它已经返回了一个数组:
#将整个文件读入一个行数组my@lines=read_file('/path/file')提示:考虑使用代替文件::SLUR.P,也就是将文件的内容放在内存中两次;一次在包含整个文件的字符串中,一次在行的单个字符串中;为什么不干脆
my@list=read\u file($file)
或者
my@list=file::Slurper::read\u lines($file)
实际上,它在内存中有三次。这其实不是什么问题<代码>我的@list=读取文件($file)
更好是因为它更干净,而不是因为它避免了一两个内存拷贝。