处理长列表

如果你已经在内存中有一个列表,那么处理它的简单且通常足够的方法就是一个简单的 foreach 循环:

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

这很好,例如对于在 $item 上进行一些处理然后将其写入文件而不保留数据的常见情况。但是,如果你从项目中构建其他数据结构,则 while 循环可以提高内存效率:

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

除非对 $item 的引用直接在结果列表中结束,否则当你进入下一个循环迭代时,可以释放从 @items 数组移出的项目并由解释器重用内存。