Bueno, yo veo que en realidad estás sacando las cifras de las posiciones impares (siempre y cuando las cifras se numeren desde la derecha).
Con un poco de matemáticas, la solución es muy sencilla:
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my $cifra = '480102304';
$cifra = reverse $cifra;
my @cifras;
for (my $i = 0; $i <= length $cifra; $i += 2) {
unshift @cifras, substr($cifra, $i, 1);
}
print "@cifras";
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
A la cifra le damos la vuelta (reverse()) para que el dígito que está en la primera posición accedamos a él como si estuviera en la posición 0 (la primera), con la función substr(). Sin esto, habría que hacer otra cuenta dentro de substr() para saber a qué dígito nos referimos.
Luego recorremos las cifras, de dos en dos.
Y para cada cifra, la extraemos y la guardamos en el arreglo, en orden inverso (deshacemos de alguna manera el efecto del reverse() anterior). Con unshift() estamos metiendo las cifras por la parte 'izquierda' del arreglo.
Ya solo queda pintarlo.
Y esta es una de la media docena de formas de hacerlo... ¿Alguien más se anima?