處理長列表
如果你已經在記憶體中有一個列表,那麼處理它的簡單且通常足夠的方法就是一個簡單的 foreach
迴圈:
foreach my $item (@items) {
...
}
這很好,例如對於在 $item
上進行一些處理然後將其寫入檔案而不保留資料的常見情況。但是,如果你從專案中構建其他資料結構,則 while
迴圈可以提高記憶體效率:
my @result;
while(@items) {
my $item = shift @items;
push @result, process_item($item);
}
除非對 $item
的引用直接在結果列表中結束,否則當你進入下一個迴圈迭代時,可以釋放從 @items
陣列移出的專案並由直譯器重用記憶體。