2014-02-07 37 views
1

我已经关于下面的方法来读取整个文件到一次一个Perl阵列某处读,读取整个文件在一次到一个数组

open my $file, '<', $filePath or die "Error: Unable to open file : $!"; 
my @fileData = <$file>; 
close $file; 

我假设阵列的尺寸仅受限制可用的系统内存。我想知道这是如何在后台工作的,因为这里没有涉及循环读取文件的行,并将它们馈送到数组中。

+5

有什么要说的吗?在数组上下文中,由'my @ fileData'提供,'<>'操作符用一个隐式循环读取数组中的行。有用。偶尔,它是有用的。 Perl有几个格言。一个是TMTOWTDI--有很多方法可以做到这一点。另一个是DWIM--做我的意思;至少,Perl比其他语言做得更多,只要你知道你在问什么。这是一个小问题。 –

+2

'S /阵列(= \ S +上下文?)/列表/如果$挑剔;' –

+1

[输入记录分隔符(http://perldoc.perl.org/perlvar.html#%24%2f),和文件处理上下文([标量vs列表](https://eval.in/98898))定义阅读应该如何表现。 –

回答

1

你的愿望就是我的命令 - 转移到一个答案,用温和的修正途中评论。

有什么要说的吗?在由my @fileData提供的数组列表上下文中,<>运算符使用隐式循环读取数组中的行。有用。偶尔,它是有用的。

Perl有一些格言。一个是TMTOWTDI--有很多方法可以做到这一点。另一个是DWIM--做我的意思;至少,Perl比其他语言做得更多,只要你知道你在问什么。这是一个小问题。

0

readline是实施<EXPR>运营商的Perl 5的内置功能。它在标量和列表上下文中具有不同的行为。