La mejor manera de iterar a través de una matriz de Perl

¿Cuál es la mejor implementación (en términos de velocidad y uso de memoria) para iterar a través de una matriz Perl? ¿Hay alguna forma mejor? (@Array no necesita ser retenido).

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

Respuestas a la pregunta(6)

Su respuesta a la pregunta