Melhor maneira de percorrer uma matriz Perl

Qual é a melhor implementação (em termos de velocidade e uso de memória) para percorrer uma matriz Perl? Existe alguma maneira melhor? (@Array não precisa ser retido).

Implementação 1
<code>foreach (@Array)
{
      SubRoutine($_);
}
</code>
Implementação 2
<code>while($Element=shift(@Array))
{
      SubRoutine($Element);
}
</code>
Implementação 3
<code>while(scalar(@Array) !=0)
{
      $Element=shift(@Array);
      SubRoutine($Element);
}
</code>
Implementação 4
<code>for my $i (0 .. $#Array)
{
      SubRoutine($Array[$i]);
}
</code>
Implementação 5
<code>map { SubRoutine($_) } @Array ;
</code>

questionAnswers(6)

yourAnswerToTheQuestion