• Publicidad

Duda sobre regexp

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

Duda sobre regexp

Notapor fgalves » 2006-11-09 06:04 @294

Hola a todos,

Tengo una llamada a una función determinada que recupera un regexp y lo utiliza para obtener una lista de ficheros:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
GetArchiveFileList(qr/STAT_\d{8}.tgz/) or error("Getting archive file list .. KO\n", $rc);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Dicha función me permite obtener la lista para ficheros del tipo:

Código: Seleccionar todo
STAT_20061020.tgz
STAT_20061330.tgz

.... es decir, ficheros con la estructura STAT_xxxxxxxx.tgz, pero guardando únicamente la fecha (d{8}) que es lo que realmente me interesa.

Mi problema es el siguiente: deseo extender dicha llamada y tomar en cuenta también ficheros del tipo:

Código: Seleccionar todo
STAT_20061020.tgz.20061109-103156
STAT_20061023.tgz.20061108-103155


(me sigue interesando únicamente la fecha (el d{8} anterior)

Mi duda: Cómo modificar la llamada para que también agarre ficheros cuya extensión sea .tgz.xxxxxxxx (donde xxxxxxx puede ser cualquier cosa)

No se si mi duda es lo suficientemente clara.

¡¡¡Muchas gracias por adelantado!!!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Publicidad

Notapor explorer » 2006-11-09 06:38 @318

Respuesta: no hagas nada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor fgalves » 2006-11-09 07:23 @349

Explorer,

Tienes toda la razon del mundo y pido disculpas por haber posteado la pregunta sin antes haber verificado el contenido del array con la lista de ficheros. El problema entonces debe estar en otra parte. Voy a seguir investigando.

Muchisimas gracias,
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor fgalves » 2006-11-09 07:43 @363

Hola de nuevo,

Resulta que es esta la funcion que me da problemas:

En @archive_file_list tengo toda la lista de ficheros que me hace falta.
Esta funcion (RemoveDaysToBeKeptUnbackuped) hace un filtraje guardando solamente los "STAT_20061020.tgz" cuya fecha no aparece en $day_list.

Asi como en @archive_file_list, tengo los famosos "STAT_20061022.tgz.xxxxxxxxxx", en @archive_files_to_be_backuped ya no los tengo. El grep al parecer me los elimina.


He aqui el codigo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub RemoveDaysToBeKeptUnbackuped {

    my $date;
    my $day_list;

    for ( 0 .. $backupnbdays_o )
    {
        $date = strftime "%Y%m%d", localtime(time() - ($_*24*60*60));

        $day_list .= "$date|";
    }

    chop $day_list;

    # Remove from file list those that must be kept unarchived
    @archive_files_to_be_backuped = grep { $_ !~ /($day_list)/ } @archive_file_list;

    return ($rc == 0);
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Alguien tiene una proposicion?
Gracias!!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor fgalves » 2006-11-09 08:14 @385

Se me olvido añadir que no desaparecen a causa del filtraje implementado en la funcion (ya lo he verificado).

Al fin y al cabo, lo que deseo es al final, tener en @archive_files_to_be_backuped,
tanto los ficheros del tipo (o formato):
STAT_20061020.tgz

como:
STAT_20061020.tgz.xxxxxxx

Precision: Para un STAT_20061020.tgz.xxxxxxx, siempre habra un STAT_20061020.tgz. Los dos, si pasan el filtraje de fechas, deberian estar en @archive_files_to_be_backuped. Creo que el problema podria estar ligado a dicha repeticion de fechas.

Gracias!!
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor explorer » 2006-11-09 09:15 @427

El grep no elimina duplicados. Para mí que el problema está en otra parte.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor fgalves » 2006-11-09 09:39 @444

Si, parece raro pero he aqui el main:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#
# So let's search for ARCHIVE files
#

GetArchiveFileList(qr/STAT_\d{8}.tgz/) or error("Getting archive file list .. KO\n", $rc);

print STDOUT "Archive file list: @archive_file_list"."\n";

#
# Let's remove archive files that must be kept unbackuped
#

RemoveDaysToBeKeptUnbackuped() or error("Removing days to be kept unbackuped .. KO\n");
print STDOUT "Archive files to be backuped: @archive_files_to_be_backuped"."\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Donde RemoveDays.... es la funcion que expuse anteriormente.


Y he aqui el resultado de la ejecucion:


Código: Seleccionar todo
Archive file list:
STAT_20060912.tgz STAT_20060913.tgz STAT_20060914.tgz STAT_20060915.tgz STAT_20060916.tgz STAT_20060918.tgz STAT_20060919.tgz STAT_20060920.tgz STAT_20060921.tgz STAT_20060922.tgz STAT_20060923.tgz STAT_20060924.tgz STAT_20060925.tgz STAT_20060926.tgz STAT_20060927.tgz STAT_20060928.tgz STAT_20060929.tgz STAT_20060930.tgz STAT_20061002.tgz STAT_20061003.tgz STAT_20061004.tgz STAT_20061005.tgz STAT_20061006.tgz STAT_20061007.tgz STAT_20061009.tgz STAT_20061010.tgz STAT_20061011.tgz STAT_20061012.tgz STAT_20061013.tgz STAT_20061014.tgz STAT_20061016.tgz STAT_20061017.tgz STAT_20061018.tgz STAT_20061019.tgz STAT_20061020.tgz STAT_20061020.tgz.20061109-143254 STAT_20061021.tgz STAT_20061021.tgz.20061109-143255 STAT_20061022.tgz STAT_20061022.tgz.20061109-143255 STAT_20061023.tgz STAT_20061023.tgz.20061109-143256 STAT_20061024.tgz STAT_20061024.tgz.20061109-143257 STAT_20061025.tgz STAT_20061025.tgz.20061109-143259 STAT_20061026.tgz STAT_20061027.tgz STAT_20061028.tgz STAT_20061030.tgz STAT_20061031.tgz STAT_20061101.tgz STAT_20061102.tgz STAT_20061103.tgz

Archive files to be backuped:
STAT_20060912.tgz STAT_20060913.tgz STAT_20060914.tgz STAT_20060915.tgz STAT_20060916.tgz STAT_20060918.tgz STAT_20060919.tgz STAT_20060920.tgz STAT_20060921.tgz STAT_20060922.tgz STAT_20060923.tgz STAT_20060924.tgz STAT_20060925.tgz STAT_20060926.tgz STAT_20060927.tgz STAT_20060928.tgz STAT_20060929.tgz STAT_20060930.tgz STAT_20061002.tgz STAT_20061003.tgz STAT_20061004.tgz STAT_20061005.tgz STAT_20061006.tgz STAT_20061007.tgz STAT_20061009.tgz STAT_20061010.tgz STAT_20061011.tgz STAT_20061012.tgz STAT_20061013.tgz STAT_20061014.tgz STAT_20061016.tgz STAT_20061017.tgz STAT_20061018.tgz STAT_20061019.tgz STAT_20061020.tgz STAT_20061021.tgz STAT_20061022.tgz STAT_20061023.tgz STAT_20061024.tgz STAT_20061025.tgz STAT_20061026.tgz STAT_20061027.tgz STAT_20061028.tgz STAT_20061030.tgz STAT_20061031.tgz STAT_20061101.tgz


Como podras observar, en el print del segundo array, solo aparecen los .tgz y no los .tgz.xxxxx que han desaparecido despues de llamar a la funcion RemoveDays....

Lo cierto es que no consigo entender pq desaparecen...
Ayuda please! :(

Gracias!
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621

Notapor explorer » 2006-11-09 12:51 @577

Los ficheros con doble extensión han desaparecido porque coinciden con la expresión regular que pones.

Por ejemplo, el fichero STAT_20061020.tgz.20061109-143254 no debería borrarse, pero en la expresión regular está puesta la fecha '20061109', que sí coincide con la fecha que sigue a 'tgz.'.

Deberás hacer una expresión regular mejor. Por ejemplo, strftime("STAT_%Y%m%d", localtime(time...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor fgalves » 2006-11-10 03:45 @198

Si, ayer finalmente me di cuenta que ese era el problema. El grep eliminaba dichos ficheros del array porque la extensión añadida contenía fechas que eran filtradas. De hecho, es normal que no me pudierais ayudar hasta que no os mostré el contenido de esos arrays.

¡¡¡Muchas gracias por la ayuda!!!
Felipe
fgalves
Perlero nuevo
Perlero nuevo
 
Mensajes: 210
Registrado: 2006-09-25 13:54 @621


Volver a Básico

¿Quién está conectado?

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

cron