閱讀檔案 foreach 與 while

當讀取一個可能很大的檔案時,while 迴圈比 foreach 具有顯著的記憶體優勢。以下將按記錄讀取檔案記錄(預設情況下,記錄表示一行,由 $/指定),在讀取時將每個記錄分配給 $_

while(<$fh>) {
    print;
}

鑽石運算子做一些神奇在這裡,以確保僅環終止在結束檔案,而不是如在只包含一個 0 字線。

以下迴圈似乎工作原理相同,但它在列表上下文中計算菱形運算子,導致整個檔案一次性讀取:

foreach(<$fh>) {
    print;
}

如果你無論如何一次操作一條記錄,這可能會導致巨大的記憶體浪費,因此應該避免。