我已经关于下面的方法来读取整个文件到一次一个Perl阵列某处读,读取整个文件在一次到一个数组
open my $file, '<', $filePath or die "Error: Unable to open file : $!";
my @fileData = <$file>;
close $file;
我假设阵列的尺寸仅受限制可用的系统内存。我想知道这是如何在后台工作的,因为这里没有涉及循环读取文件的行,并将它们馈送到数组中。
我已经关于下面的方法来读取整个文件到一次一个Perl阵列某处读,读取整个文件在一次到一个数组
open my $file, '<', $filePath or die "Error: Unable to open file : $!";
my @fileData = <$file>;
close $file;
我假设阵列的尺寸仅受限制可用的系统内存。我想知道这是如何在后台工作的,因为这里没有涉及循环读取文件的行,并将它们馈送到数组中。
你的愿望就是我的命令 - 转移到一个答案,用温和的修正途中评论。
有什么要说的吗?在由
my @fileData
提供的数组列表上下文中,<>
运算符使用隐式循环读取数组中的行。有用。偶尔,它是有用的。Perl有一些格言。一个是TMTOWTDI--有很多方法可以做到这一点。另一个是DWIM--做我的意思;至少,Perl比其他语言做得更多,只要你知道你在问什么。这是一个小问题。
readline
是实施<EXPR>
运营商的Perl 5的内置功能。它在标量和列表上下文中具有不同的行为。
有什么要说的吗?在数组上下文中,由'my @ fileData'提供,'<>'操作符用一个隐式循环读取数组中的行。有用。偶尔,它是有用的。 Perl有几个格言。一个是TMTOWTDI--有很多方法可以做到这一点。另一个是DWIM--做我的意思;至少,Perl比其他语言做得更多,只要你知道你在问什么。这是一个小问题。 –
'S /阵列(= \ S +上下文?)/列表/如果$挑剔;' –
[输入记录分隔符(http://perldoc.perl.org/perlvar.html#%24%2f),和文件处理上下文([标量vs列表](https://eval.in/98898))定义阅读应该如何表现。 –