Es que el
array original no contiene los titulares... son extraídos de los propios datos que vamos leyendo del @array.
Se puede hacer una cosa... vamos leyendo los datos del @array, y cada vez que encontramos un titular nuevo, lo guardamos en otro
array. De esa manera vamos guardando el orden de aparición de los titulares, que aprovecharemos en la salida.
Using perl Syntax Highlighting
#!/usr/bin/env perl
use v5.14;
my @array = ( '64A10|F/I', '65A10|F/I', '66A10|B/A', '67A10|B/A', '54B01|C/I' );
my %cols;
my @titulares_encontrados;
for (@array) {
my($valor, $clave) = split /\|/;
if (!exists $cols{$clave}) { # si encontramos un titular nuevo
push @titulares_encontrados, $clave; # lo guardamos
}
push @{$cols{$clave}}, $valor;
}
say Dumper \%cols;
my $iX = 65;
my $iY = 122;
my $dX = 100;
my $dY = 20;
my $X = $iX;
my $Y = $iY;
for my $col (@titulares_encontrados) {
$Y = $iY; # Reiniciar Y
for my $valor ($col, @{$cols{$col}}) {
say "[$X,$Y] $valor";
$Y += $dY;
}
$X += $dX;
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4