Yo creo que pasa lo siguiente: Perl cree que el rango en realidad es un biestable. En la ejecución, como el valor de ejecución del biestable es verdadero, la sentencia se transforma en
$array[1], por lo que te devuelve el 1 que está en la segunda posición del array.
Hay algo mal: si quieres obtener más de un valor de un array, debes colocar el sigil '@' delante del nombre de la variable. Si pones un '$', quiere decir que sólo quieres un valor.
Y la expresión de rango siempre va en orden creciente, así que
0..-2 tampoco es válido.
La expresión para obtener los dos últimos valores del array, entonces es:
Using perl Syntax Highlighting
my @elementos = @array[-2
.. -1
];Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Pero además, pides obtener los valores primero el último y luego el penúltimo, así que hay que darles la vuelta:
Using perl Syntax Highlighting
my @elementos = reverse @array[-2
.. -1
];Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4