• Publicidad

Expresión regular que me busque esto

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Expresión regular que me busque esto

Notapor Sombrerero_Loco » 2008-12-02 07:35 @357

¡¡Hola!!

Sigo a la carga, tengo el siguiente pedazito de código, que hace lo siguiente:
1)Compruebe si un directorio existe, sino -> lo crea
2)compruebe que existe el fichero, sino ->
3)Abre el fichero para append al final y escribe la última hora de actualización.
4)Abre el fichero para lectura, busca lo que esté a la derecha de UTC-># y me coge esos datos para compararlos con otra hora global (para saber si se ha actualizado hace más de 300 segundos)

Las preguntas son:
a) ¿La expresión regular que tengo puesta es la correcta?
b) ¿Cómo hago para que cada vez que lo encuentre me lo mande a una variable que pueda comprobar con mi tiempo global (para saber si se ha actualizado?

¡¡Gracias!!


PD: Igual esto no va en Básico, jeje :)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use DBI;

#Declaracion de variables Globales de tiempo, $hora_integracion es el timing mas unos segundos por si
#existieran cuellos de botella, 120 = 2 minutos + 20 seg de gracia
$hora_comienzo = time;
$hora_integracion = $hora_comienzo -140;

#Declaramos conexion a la DB
my @db_datos = ('DBI:Oracle:OPENVIEW', 'OVO_BAC', 'OVO_BAC');
my $dbh = DBI->connect(@db_datos) or die "no se ha podido conectar\n";

#Comprobamos si existe fichero, si no -> lo creamos
#Marcamos cuando hemos empezado a actualizar en UTC

my $dir_salida ="c:\\Logs_update\\";
if (!(-e $dir_salida))         {
    mkdir($dir_salida) or die "Error al crear el directorio\n";
    }
my $lastupdate = "c:\\logs_update\\last_update.txt";
    if (!(-e $lastupdate)) {
    open (SALIDA,">$lastupdate") or die "no se ha podido abrir el fichero para escritura\n";
    }
    else {
    open (SALIDA, ">>$lastupdate");
    print SALIDA "Tiempo de inicio del Script de integración en UTC->#$hora_comienzo#\n";
    close SALIDA;
    }


    open (SALIDA,"<$lastupdate") or die "No se puede abrir el fichero para lectura de fechas\n";
    my $Comprueba_update;
    my @array_comprobados=  (); #NOSE SI ENVIARLO A ARRAY O A VARIABLE
    foreach ($comprueba_update =<SALIDA>{
              if ($comprueba_update = ~ m/^UTC-># (\w+)/) {
AQUI IRIA LA VARIABLE A LA QUE LO MANDO PARA COMPROBARLO

             }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Sombrerero_Loco
Perlero nuevo
Perlero nuevo
 
Mensajes: 42
Registrado: 2008-11-11 11:20 @514

Publicidad

Notapor explorer » 2008-12-02 09:07 @421

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use DBI;

# Declaración de variables globales de tiempo,
# $hora_integracion es el timing más unos segundos
# por si existieran cuellos de botella,
# 120 = 2 minutos + 20 seg de gracia
my $hora_comienzo    = time;
my $hora_integracion = $hora_comienzo - 140;

# Declaramos conexión a la DB
my $dbh =  DBI->connect(
          'DBI:Oracle:OPENVIEW',
          'OVO_BAC', 'OVO_BAC'
        )
        or die "ERROR: no se ha podido conectar\n"
        ;

# Comprobamos si existe fichero, si no, lo creamos
# Marcamos cuándo hemos empezado a actualizar en UTC

my $dir_salida ='C:/logs_update';

if (!-e $dir_salida) {
    mkdir($dir_salida) or die "ERROR al crear el directorio: $!\n";
}

my $lastupdate = "$dir_salida/last_update.txt";

if (!-e $lastupdate) {
    open (SALIDA,">$lastupdate") or die "ERROR: no se ha podido abrir el fichero para escritura: $!\n";
    close SALIDA;
}
else {
    open (SALIDA, ">>$lastupdate");
    print SALIDA "Tiempo de inicio del script de integración en UTC->#$hora_comienzo#\n";
    close SALIDA;
}

open (SALIDA,"<$lastupdate") or die "ERROR: No se puede abrir el fichero para lectura de fechas $!\n";

my $Comprueba_update;
my @array_comprobados = (); # NO SE SI ENVIARLO A ARRAY O A VARIABLE
while  ($comprueba_update = <SALIDA>) {
    if ($comprueba_update =~ m/UTC->#(\d+?)#/) {
        # AQUÍ IRÍA LA VARIABLE A LA QUE LO MANDO PARA COMPROBARLO
        print "Valor de update: $1\n";
    }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Había que hacer unos cambios a la expresión regular... Los paréntesis de captura lo guardarán en $1 (porque es el primer par de paréntesis de captura).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado