Si están en posiciones fijas, puedes usar unpack() para extraerlos.
Con este programa, se sacan las columnas (he deducido que son de 7, 16 y 16 caracteres de ancho):
Using perl Syntax Highlighting
#!/usr/bin/perl
# Ejemplo de unpack para columnas de texto
#
# Columnas:
#
# 123456712345678901234561234567890123456
# +------+---------------+---------------+
# 9836 188 1340
# 9837 54077 1510
use v5.24;
# leer archivo por lineas
open my $FH, '<', 'code_41166.txt';
while (<$FH>) {
chomp;
my @campos = unpack 'A7 A16 A16';
say '[', join('|', @campos), ']';
}
close $FH;
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
La salida es:
Using text Syntax Highlighting
[9836| 188| 1340]
[9837| 54077| 1510]
[9892| 390|]
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Si en vez de texto, quieres los números (quitar los espacios en blanco que hay delante de los números), te vale con sumarles un 0.
Tienes un completísimo manual (¡en español!) en el documento
perldoc perlpacktut. La descripción de unpack() la tienes en
perldoc -f unpack