2014-02-07 53 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的內置功能。它在標量和列表上下文中具有不同的行爲。