Hola:
No entiendo muy bien lo que buscas, pero checa este ejemplo:
Código:
#!/usr/bin/perl -w
use strict;
#NUESTRO STRING DE CARACTERES
my $string = "A11111B222C333D44E5555F666G7777H88888";
my %Datos;
#UNA MEMORIA
my $memoria = '';
#HACEMOS UNA ITERACIÓN CARACTER POR CARACTER
foreach(split //, $string){
if(/(\D)/){
$Datos{$_} = '';
$memoria = $1;
}
elsif(/(\d)/){
$Datos{$memoria} .= $1;
}
}
#YA TENEMOS NUESTRO HASH DE DATOS COMPLETO
#AHORA LO IMPRIMIMOS
for my $key(sort keys %Datos){
print "$key: $Datos{$key}\n";
}
Lo que hace es que recibe uno a unos los caracteres que tiene $string, así como tu dices que recibes los datos.
Entonces creamos una hash que va a tener un llave diferente dependiendo de la letra (A,B,C,D...etc), a la cual vamos agregando al valor los números que se reciban hasta llegar a la siguiente letra.
Por ejemplo, al final de recibir los datos uno a uno, tendrás un hash con la siguiente estructura:
Código:
$Datos{'A'} = '11111'
$Datos{'B'} = '222'
$Datos{'C'} = '333'
$Datos{'D'} = '44'
$Datos{'E'} = '5555'
$Datos{'F'} = '666'
$Datos{'G'} = '7777'
$Datos{'H'} = '88888'
Así puedes hacer una iteración for para desplegar los datos, o imprimir cada letra independientemente.
Es la solución que se me ocurre por lo que entiendo que necesitas, ya nada más sería cuestión que lo adaptes a tus necesidades.
SALUDOS