閱讀檔案 foreach 與 while
當讀取一個可能很大的檔案時,while
迴圈比 foreach
具有顯著的記憶體優勢。以下將按記錄讀取檔案記錄(預設情況下,記錄表示一行,由 $/
指定),在讀取時將每個記錄分配給 $_
:
while(<$fh>) {
print;
}
該鑽石運算子做一些神奇在這裡,以確保僅環終止在結束檔案,而不是如在只包含一個 0
字線。
以下迴圈似乎工作原理相同,但它在列表上下文中計算菱形運算子,導致整個檔案一次性讀取:
foreach(<$fh>) {
print;
}
如果你無論如何一次操作一條記錄,這可能會導致巨大的記憶體浪費,因此應該避免。