Ya encontré el problema
En la línea del while(), estás leyendo desde la entrada estándar una línea cada vez, y la guardas en la variable $linea. Pero... resulta que estás extrayendo la información de
$_... y $_ *no* está almacenando el valor de la línea.
Debes hacer el siguiente cambio. Esto:
while (my $linea = <>) {
por esto:
while (<>) {
Y ahora sí: la línea que estás leyendo se guardará en
$_.
Using perl Syntax Highlighting
while (<>) {
chomp;
$Nombre = substr($_, 0, 255);
$SegNom = substr($_,255, 50);
$PriNom = substr($_,305, 50);
$Categor = substr($_,355, 20);
$SubCate = substr($_,375, 20);
$Pais = substr($_,395,100);
$FecNac = substr($_,495, 75);
$Otros = substr($_,570,430);
$Ast = '*';
printf ("%255s%50s%50s%20s%20s%100s%75s%430s\n",
$Nombre, $SegNom, $PriNom, $Categor, $SubCate, $Pais, $FecNac, $Otros, $Ast
);
}
Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
Y ahora veo dos problemas más...
* La partición no tiene sentido porque luego los vuelves a juntar en el printf()
* La variable $Ast no está saliendo, porque no está indicando en la cadena de formato de printf()
Yo sospecho que lo que quieres hacer es añadir un '*' al final de cada línea. En ese caso, quedaría el código así:
Using perl Syntax Highlighting
while (my $linea = <>) {
chomp $linea;
print $linea, ' *', "\n";
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
(En este ejemplo he cambiado el $_ por $linea, pero es lo mismo que antes.)