處理長列表

如果你已經在記憶體中有一個列表,那麼處理它的簡單且通常足夠的方法就是一個簡單的 foreach 迴圈:

foreach my $item (@items) {
    ...
}

這很好,例如對於在 $item 上進行一些處理然後將其寫入檔案而不保留資料的常見情況。但是,如果你從專案中構建其他資料結構,則 while 迴圈可以提高記憶體效率:

my @result;
while(@items) {
    my $item = shift @items;
    push @result, process_item($item);
}

除非對 $item 的引用直接在結果列表中結束,否則當你進入下一個迴圈迭代時,可以釋放從 @items 陣列移出的專案並由直譯器重用記憶體。