I would have to agree here - @grades is a global array, so it gets created and allocated a single time. The list in the foreach on the other hand behaves more like my @grades would. I don't know much about perlguts either, but maybe that would be worth adding as a third benchmark to check?