Hola, Foro.
Lo que intento conseguir es que en base al siguiente código realice lo siguiente:
Abrir un archivo y leer la última cadena que contenga caracteres; posteriormente guardar esta cadena en un arreglo; una vez guardada realizar una búsqueda de un número que se encuentre en el rango de 0-5; una vez encontrado el número incrementar el valor de este en 1; posteriormente agregar una cadena de caracteres con la variable incrementada al mismo archivo para que posteriormente sea leído.
Detalles:
En teoría el código está tomando la última cadena de caracteres, aunque la última línea del archivo es un carácter de nueva línea, se omite con la instrucción #7 del archivo, una vez encontrado el patrón de búsqueda se guarda el valor en la variable "$match", posteriormente realiza las condicionales "if" si el valor encontrado se encuentra entre 0-5.
El problema surge cuando se entra al condicional "if" para incrementar el valor de la variable "contador" y se le pide imprimir en archivo, la impresión de la cadena de caracteres es exitosa pero el resultado de la variable siempre es 1.
Nota: el archivo base cuenta con 2 líneas; la primera es una cadena de caracteres la cual contiene el número 0, y la segunda cuenta con el carácter de nueva línea; cuando se ejecuta por primera vez el archivo la variable "contador" se incrementa (este caso es exitoso), para los siguientes casos cuando se ejecuta el archivo la variable "contador" queda en 1.
Adjunto mi código fuente y el archivo base en el cual se han grabado 3 ejecuciones del código.
Espero me puedan dar algún comentario para poder solventar este error.
Saludos.
Archivo base para leer y guardar cadenas de caracteres.
MONITOR_TRYING_PCSCF_ERROR.log
Using text Syntax Highlighting
El nodo tiene registrados 0 intentos fallidos de Monitoreo
El nodo lleva 1 veces sin responder el SIP OPTIONS al DNS
El nodo lleva 1 veces sin responder el SIP OPTIONS al DNS
El nodo lleva 1 veces sin responder el SIP OPTIONS al DNS
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Código fuente en Perl
Using perl Syntax Highlighting
#!/usr/bin/perl -s
open (LOGBUG, "MONITOR_TRYING_PCSCF_ERROR.log") || die "No se encuentra archivo";
@arreglo = <LOGBUG>;
$string = $arreglo[-1];
print " $string \n";
if ($counter = $string =~ /([0-5])/){
$match = $1;
print "la palabra encontrada es '$match' en la cadena \n";
close (LOGBUG);
}
if ($firts <= 5){
open (LOGBUG, ">>MONITOR_TRYING_PCSCF_ERROR.log") || die "No se encuentra archivo";
$contador = $first;
$contador++;
print LOGBUG "El nodo lleva $contador veces sin responder el SIP OPTIONS al DNS\n";
close (LOGBUG);
}
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4