对从Perl中的文件读取感到困惑

tho*_*lee 0 io perl performance file

当我想从文件中读取时,我使用以下代码:

open my $fh, "file_path";
while(<$fh>)
{
    # do something here
}
Run Code Online (Sandbox Code Playgroud)

但是如果文件非常大,我担心IO性能,因为它逐行读取磁盘.

在C程序中,我们可能更喜欢一次将几个字节(例如:4096字节)读入内存(调用'fread'函数).这可以减少磁盘IO操作的数量,并有利于程序的性能.

所以我的问题是:在Perl中有没有办法一次从文件中读取多行或几个字节?或者Perl将封装IO细节,我不需要担心吗?

Qia*_*iau 5

是的,默认情况下IO是缓冲的,请参阅openperliol.

如果要访问C风格的函数,可以使用sysopen&sysread.