Llevo tiempo peleándome con Perl (estoy aprendiendo) y me estoy haciendo un script que me falla, pero no veo dónde. ¿Me podéis echar una mano? Me imagino que para vosotros sea una tontería, pero yo me estoy volviendo tonto (más).
Tengo un fichero que está dividido en columnas separadas por un tabulador. Solo busco el separar las líneas internas del fichero en 3 ficheros de texto para después tratarlo con Excel.
A ver si alguno me dice porqué me da error (Ya sé que tendré mil errores y que se puede hacer mucho mejor, pero para ser "mi primera vez" tampoco creo que este tan mal...
Using perl Syntax Highlighting
## EJECUTA UNA CONSULTA AL BPERROR PARA SACAR LOS ERRORES
$ejecucion=`bperror -U -backstat -s info -d 04/14/08 -e 04/14/08`;
## LO VOLCAMOS A UN FICHERO AUXILIAR PARA LEERLO
## PARA ESO PRIMERO LO TENEMOS QUE GENERAR Y ABRIR
open (AUXILIAR,">C:/auxiliar.txt");
## DESPUES LE VOLCAMOS LOS DATOS DE LA VARIABLE
print AUXILIAR $ejecucion;
## LO CERRAMOS PARA GUARDARLO
close (AUXILIAR);
## LO LEEMOS Y RECORREMOS PARA METER EN UNA ARRAY LAS LINEAS CON ERROR 0 Y 1
## LAS EXPLICACIONES DE LOS ERRORES LAS OBVIAMOS
## LOS ERRORES DISTINTOS DE 0 Y 1 LOS METEMOS EN OTRO FICHERO
## CONTABILIZAMOS TODO
## SE INICIALIZAN LAS VARIABLES
$totales=0;
$errores_0_1=0;
$errores_196=0;
$todo_errores=0;
## LO ABRIMOS PARA LEERLO DE NUEVO
open (AUXILIAR,"C:/auxiliar.txt");
## AÑADIMOS CADA LINEA A UNA MATRIZ
@registros=<AUXILIAR>;
## LO RECORREMOS BUSCANDO EN LA CADENA DEL PRINCIPIO
## TODO LO DISTINTO A "(" LO CONTAMOS EN LA VARIABLE TOTALES
foreach <>\( (@registros);
$totales=$totales+1;
## TODO LOS ERRORES A 196 LO CONTAMOS Y LO METEMOS EN OTRO FICHERO
## Y COMO SON ERRORES TAMBIEN SE CONTABILIZA EN TODOS_ERRORES
if ($registros =~/^196)/)
{
$errores_196 = $errores_196 + 1;
$todo_errores = todo_errores + 1;
open (fichero_196, ">C:/errores_196.txt");
print fichero_196 $registros;
}
## TODOS LOS ERRORES DISTINTOS A "0" O "1" SE MANDAN A OTRO FICHERO
else if (($registros =~/^ 0/)||($registros =~/^ 1/))
{
open (fichero_dist_0, ">>C:/errores_0_y_1.txt");
print fichero_dist_0 $registros;
}
## EL RESTO DE LOS ERRORES LOS VOLCAMOS A OTRO FICHERO Y LOS CONTAMOS
open (fichero_dist_0, ">C:/errores.txt");
print fichero_dist_0 @registros;
$ejecucion=`bperror -U -backstat -s info -d 04/14/08 -e 04/14/08`;
## LO VOLCAMOS A UN FICHERO AUXILIAR PARA LEERLO
## PARA ESO PRIMERO LO TENEMOS QUE GENERAR Y ABRIR
open (AUXILIAR,">C:/auxiliar.txt");
## DESPUES LE VOLCAMOS LOS DATOS DE LA VARIABLE
print AUXILIAR $ejecucion;
## LO CERRAMOS PARA GUARDARLO
close (AUXILIAR);
## LO LEEMOS Y RECORREMOS PARA METER EN UNA ARRAY LAS LINEAS CON ERROR 0 Y 1
## LAS EXPLICACIONES DE LOS ERRORES LAS OBVIAMOS
## LOS ERRORES DISTINTOS DE 0 Y 1 LOS METEMOS EN OTRO FICHERO
## CONTABILIZAMOS TODO
## SE INICIALIZAN LAS VARIABLES
$totales=0;
$errores_0_1=0;
$errores_196=0;
$todo_errores=0;
## LO ABRIMOS PARA LEERLO DE NUEVO
open (AUXILIAR,"C:/auxiliar.txt");
## AÑADIMOS CADA LINEA A UNA MATRIZ
@registros=<AUXILIAR>;
## LO RECORREMOS BUSCANDO EN LA CADENA DEL PRINCIPIO
## TODO LO DISTINTO A "(" LO CONTAMOS EN LA VARIABLE TOTALES
foreach <>\( (@registros);
$totales=$totales+1;
## TODO LOS ERRORES A 196 LO CONTAMOS Y LO METEMOS EN OTRO FICHERO
## Y COMO SON ERRORES TAMBIEN SE CONTABILIZA EN TODOS_ERRORES
if ($registros =~/^196)/)
{
$errores_196 = $errores_196 + 1;
$todo_errores = todo_errores + 1;
open (fichero_196, ">C:/errores_196.txt");
print fichero_196 $registros;
}
## TODOS LOS ERRORES DISTINTOS A "0" O "1" SE MANDAN A OTRO FICHERO
else if (($registros =~/^ 0/)||($registros =~/^ 1/))
{
open (fichero_dist_0, ">>C:/errores_0_y_1.txt");
print fichero_dist_0 $registros;
}
## EL RESTO DE LOS ERRORES LOS VOLCAMOS A OTRO FICHERO Y LOS CONTAMOS
open (fichero_dist_0, ">C:/errores.txt");
print fichero_dist_0 @registros;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Muchas gracias de antemano...