• Publicidad

if con patrón

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

if con patrón

Notapor rraulqm92 » 2014-10-07 05:17 @261

Hola.

Estoy intentando crear una restricción a una función y para ello necesito aplicar algo parecido al código que pongo un poco más abajo. El problema es que me da el error: Use of uninitialized value $titulo in pattern match (m//) at ./Aviso_modificaciones_BOE_actualizado.pl line 94.

Lo que yo quiero es aplicar la función siempre y cuando el título empiece por lo que pone en el if.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ( $titulo =~ /Constitución(.*?)/ ) {
  2.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  3. }
  4. elsif ( $titulo =~ /Tratado(.*?)/ && $revision_consolidada !~ /Constitución(.*?)/ ) {
  5.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  6. }
  7. elsif ( $titulo =~ /Ley Orgánica(.*?)/
  8.     && ( $revision_consolidada !~ /Constitución(.*?)/ || $revision_consolidada !~ /Tratado(.*?)/ ) ) {
  9.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  10. }
  11. elsif ( $titulo =~ /LEY(.*?)/
  12.     && ( $revision_consolidada !~ /Constitución(.*?)/ || $revision_consolidada !~ /Tratado(.*?)/ ) ) {
  13.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  14. }
  15. elsif (
  16.     $titulo =~ /Real Decreto-ley(.*?)/
  17.     && (   $revision_consolidada !~ /Ley Orgánica(.*?)/
  18.         || $revision_consolidada !~ /Constitución(.*?)/
  19.         || $revision_consolidada !~ /Tratado(.*?)/ )
  20.     ) {
  21.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  22. }
  23. elsif (
  24.     $titulo =~ /Real Decreto Legislativo(.*?)/
  25.     && (   $revision_consolidada !~ /Real Decreto-ley(.*?)/
  26.         || $revision_consolidada !~ /Ley Orgánica(.*?)/
  27.         || $revision_consolidada !~ /Constitución(.*?)/
  28.         || $revision_consolidada !~ /Tratado(.*?)/ )
  29.     ) {
  30.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  31. }
  32. elsif (
  33.     $titulo =~ /Real Decreto(.*?)/
  34.     && (   $revision_consolidada !~ /Real Decreto Legislativo(.*?)/
  35.         || $revision_consolidada !~ /Real Decreto-ley(.*?)/
  36.         || $revision_consolidada !~ /Ley Orgánica(.*?)/
  37.         || $revision_consolidada !~ /Constitución(.*?)/
  38.         || $revision_consolidada !~ /Tratado(.*?)/ )
  39.     ) {
  40.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  41. }
  42. elsif (
  43.     $titulo =~ /Orden(.*?)/
  44.     && (   $revision_consolidada !~ /Real Decreto Legislativo(.*?)/
  45.         || $revision_consolidada !~ /Real Decreto-ley(.*?)/
  46.         || $revision_consolidada !~ /Ley Orgánica(.*?)/
  47.         || $revision_consolidada !~ /Constitución(.*?)/
  48.         || $revision_consolidada !~ /Tratado(.*?)/ )
  49.     ) {
  50.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  51. }
  52. elsif (
  53.     $titulo =~ /Circular(.*?)/
  54.     && (   $revision_consolidada !~ /Orden(.*?)/
  55.         || $revision_consolidada !~ /Real Decreto Legislativo(.*?)/
  56.         || $revision_consolidada !~ /Real Decreto-ley(.*?)/
  57.         || $revision_consolidada !~ /Ley Orgánica(.*?)/
  58.         || $revision_consolidada !~ /Constitución(.*?)/
  59.         || $revision_consolidada !~ /Tratado(.*?)/ )
  60.     ) {
  61.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  62. }
  63. else {
  64.     $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  65. }
  66.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2014-10-07 05:46 @282, editado 3 veces en total
Razón: Reformateado con Perltidy; funcion => función; codigo => código; mas => más; titulo => título
rraulqm92
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2014-10-07 04:29 @228

Publicidad

Re: if con patrón

Notapor explorer » 2014-10-07 05:49 @284

Bienvenido a los foros de Perl en Español, rraulqm92.

El mensaje de error dice que no puede realizar la expresión regular en la línea 94, porque $titulo no ha sido inicializada (no se le ha dado ningún valor).

Por otra parte, no me gusta nada el uso de '&&' y '||'. Es mejor usar 'and' y 'or', respectivamente.

Y, finalmente, pase lo que pase en los if(), siempre se va a ejecutar $file_concuerda = Grep_file( $dir_file, $revision_consolidada );, así que, al final, te sobran todas las líneas :)
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

Re: if con patrón

Notapor rraulqm92 » 2014-10-08 04:37 @234

¡Muchas Gracias por tu ayuda!

He conseguido que funcione mi script pero no funciona correctamente. ¡He quitado el último else como me dijiste!

Yo lo que quiero es que si mi variable string $titulo empieza por LEY y la variable $revision_consolidada empieza por "Ley Orgánica" no ejecute la función Grep_file.

¿Sabes si están bien puestas las coincidencias? (!~ =~)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach my $revision_consolidada (@revisiones) {
  2.  
  3.     my $file_concuerda = 0;
  4.  
  5.     if ( $titulo =~ /Constitución(.*?)/ ) {
  6.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  7.     }
  8.     elsif ( $titulo =~ /Tratado(.*?)/ and $revision_consolidada !~ /Constitución(.*?)/ ) {
  9.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  10.     }
  11.     elsif ( $titulo =~ /Ley Orgánica(.*?)/
  12.         and ( $revision_consolidada !~ /Constitución(.*?)/ or $revision_consolidada !~ /Tratado(.*?)/ ) ) {
  13.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  14.     }
  15.     elsif (
  16.         $titulo =~ /LEY(.*?)/
  17.         and (  $revision_consolidada !~ /Ley Orgánica(.*?)/
  18.             or $revision_consolidada !~ /Constitución(.*?)/
  19.             or $revision_consolidada !~ /Tratado(.*?)/ )
  20.         ) {
  21.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  22.     }
  23.     elsif (
  24.         $titulo =~ /Real Decreto-ley(.*?)/
  25.         and (  $revision_consolidada !~ /Ley(.*?)/
  26.             or $revision_consolidada !~ /Ley Orgánica(.*?)/
  27.             or $revision_consolidada !~ /Constitución(.*?)/
  28.             or $revision_consolidada !~ /Tratado(.*?)/ )
  29.         ) {
  30.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  31.     }
  32.     elsif (
  33.         $titulo =~ /Real Decreto Legislativo(.*?)/
  34.         and (  $revision_consolidada !~ /Ley(.*?)/
  35.             or $revision_consolidada !~ /LEY(.*?)/
  36.             or $revision_consolidada !~ /Real Decreto-ley(.*?)/
  37.             or $revision_consolidada !~ /Ley Orgánica(.*?)/
  38.             or $revision_consolidada !~ /Constitución(.*?)/
  39.             or $revision_consolidada !~ /Tratado(.*?)/ )
  40.         ) {
  41.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  42.     }
  43.     elsif (
  44.         $titulo =~ /Real Decreto(.*?)/
  45.         and (  $revision_consolidada !~ /Ley(.*?)/
  46.             or $revision_consolidada !~ /LEY(.*?)/
  47.             or $revision_consolidada !~ /Real Decreto Legislativo(.*?)/
  48.             or $revision_consolidada !~ /Real Decreto-ley(.*?)/
  49.             or $revision_consolidada !~ /Ley Orgánica(.*?)/
  50.             or $revision_consolidada !~ /Constitución(.*?)/
  51.             or $revision_consolidada !~ /Tratado(.*?)/ )
  52.         ) {
  53.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  54.     }
  55.     elsif (
  56.         $titulo =~ /Orden(.*?)/
  57.         and (  $revision_consolidada !~ /Ley(.*?)/
  58.             or $revision_consolidada !~ /Real Decreto(.*?)/
  59.             or $revision_consolidada !~ /LEY(.*?)/
  60.             or $revision_consolidada !~ /Real Decreto Legislativo(.*?)/
  61.             or $revision_consolidada !~ /Real Decreto-ley(.*?)/
  62.             or $revision_consolidada !~ /Ley Orgánica(.*?)/
  63.             or $revision_consolidada !~ /Constitución(.*?)/
  64.             or $revision_consolidada !~ /Tratado(.*?)/ )
  65.         ) {
  66.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  67.     }
  68.     elsif (
  69.            $titulo =~ /Circular(.*?)/
  70.         or $titulo =~ /Resolución(.*?)/
  71.         or $titulo =~ /Anuncio(.*?)/
  72.         and (  $revision_consolidada !~ /Ley(.*?)/
  73.             or $revision_consolidada !~ /LEY(.*?)/
  74.             or $revision_consolidada !~ /Orden(.*?)/
  75.             or $revision_consolidada !~ /Real Decreto Legislativo(.*?)/
  76.             or $revision_consolidada !~ /Real Decreto-ley(.*?)/
  77.             or $revision_consolidada !~ /Ley Orgánica(.*?)/
  78.             or $revision_consolidada !~ /Constitución(.*?)/
  79.             or $revision_consolidada !~ /Tratado(.*?)/ )
  80.         ) {
  81.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  82.     }
  83.  
  84.     if ( $file_concuerda eq 1 ) {
  85.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2014-10-08 05:03 @252, editado 1 vez en total
Razón: ultimo => último; funcion => función; estan => están;
rraulqm92
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2014-10-07 04:29 @228

Re: if con patrón

Notapor explorer » 2014-10-08 07:23 @349

Otra cosa... ¿Para qué tanto '(.*?)'? Quiero decir... los paréntesis de captura van a capturar todo lo que sigue a partir de ese punto. Y como no se ha puesto un patrón de final, capturará todo.

¿En la función Grep_file se hace uso, entonces, de la variable $1? Si no es así, entonces las capturas no sirven para nada.

Si solo se quiere saber si existen ciertas palabras, las expresiones regulares pueden pasar de ser

if ( $titulo =~ /Constitución(.*?)/ ) {

a

if ( $titulo =~ /Constitución/ ) {

Es más... en ese caso, tampoco necesitas una expresión regular. Con la función index() puedes buscar texto dentro de otro, mucho más rápido que con una expresión regular:

if ( index($titulo, 'Constitución') > -1 ) {


Con el código actual, se podría reducir a esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     foreach my $revision_consolidada (@revisiones) {
  2.  
  3.         my $file_concuerda = 0;
  4.  
  5.         if ( $titulo =~ /Constitución/ ) {
  6.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  7.         }
  8.         elsif ( $titulo =~ /Tratado/
  9.             and $revision_consolidada !~ /Constitución/ ) {
  10.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  11.         }
  12.         elsif ( $titulo =~ /Ley Orgánica/
  13.             and $revision_consolidada !~ /Constitución|Tratado/ ) {
  14.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  15.         }
  16.         elsif ( $titulo =~ /LEY/
  17.             and $revision_consolidada !~ /Ley Orgánica|Constitución|Tratado/ ) {
  18.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  19.         }
  20.         elsif ( $titulo =~ /Real Decreto-ley/
  21.             and $revision_consolidada !~ /Ley|Ley Orgánica|Constitución|Tratado/ ) {
  22.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  23.         }
  24.         elsif ( $titulo =~ /Real Decreto Legislativo/
  25.             and $revision_consolidada !~ /Ley|LEY|Real Decreto-ley|Ley Orgánica|Constitución|Tratado/ ) {
  26.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  27.         }
  28.         elsif ( $titulo =~ /Real Decreto/
  29.             and $revision_consolidada !~ /Ley|LEY|Real Decreto Legislativo|Real Decreto-ley|Ley Orgánica|Constitución|Tratado/ ) {
  30.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  31.         }
  32.         elsif ( $titulo =~ /Orden/
  33.             and $revision_consolidada !~ /Ley|Real Decreto|LEY|Real Decreto Legislativo|Real Decreto-ley|Ley Orgánica|Constitución|Tratado/ ) {
  34.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  35.         }
  36.         elsif ( $titulo =~ /Circular|Resolución|Anuncio/
  37.             and $revision_consolidada !~ /Ley|LEY|Orden|Real Decreto Legislativo|Real Decreto-ley|Ley Orgánica|Constitución|Tratado/ ) {
  38.                 $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  39.         }
  40.  
  41.         if ( $file_concuerda eq 1 ) {
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Como ves, usando el carácter de alternancia '|' en los patrones, te ahorras mucho código.

Nota importante... Si buscas por 'Ley', entonces ya no necesitas buscar por 'Ley Orgánica' ni por 'Real Decreto-ley'.
Y si pones el modificador '/i' al final de la expresión regular, también puedes quitar el buscar por 'LEY'.

Y como la operación es la misma en todos los casos, quedaría así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         if (
  2.                 $titulo =~ /Constitución/
  3.         or (
  4.                 $titulo =~ /Tratado/
  5.            and  $revision_consolidada !~ /Constitución/
  6.         )
  7.         or (
  8.                 $titulo =~ /Ley Orgánica/
  9.            and  $revision_consolidada !~ /Constitución|Tratado/
  10.         )
  11.         or (
  12.                 $titulo =~ /LEY/
  13.            and  $revision_consolidada !~ /Ley Orgánica|Constitución|Tratado/
  14.         )
  15.         or (
  16.                 $titulo =~ /Real Decreto-ley/
  17.            and  $revision_consolidada !~ /Ley|Constitución|Tratado/                                    # incluido Ley Orgánica
  18.         )
  19.         or (
  20.                 $titulo =~ /Real Decreto Legislativo/
  21.            and  $revision_consolidada !~ /Ley|Constitución|Tratado/i                                   # incluido Ley Orgánica, LEY y Real Decreto-ley
  22.         )
  23.         or (
  24.                 $titulo =~ /Real Decreto/
  25.            and  $revision_consolidada !~ /Ley|Real Decreto Legislativo|Constitución|Tratado/i          # incluido Ley Orgánica, LEY y Real Decreto-ley
  26.         )
  27.         or (
  28.                 $titulo =~ /Orden/
  29.            and  $revision_consolidada !~ /Ley|Real Decreto|Constitución|Tratado/i      # incluido Ley Orgánica, LEY, Real Decreto Legislativo y Real Decreto-ley
  30.         )
  31.         or (
  32.                 $titulo =~ /Circular|Resolución|Anuncio/
  33.            and  $revision_consolidada !~ /Ley|Orden|Real Decreto Legislativo|Constitución|Tratado/i    # incluido Ley Orgánica, LEY y Real Decreto-ley
  34.         )
  35.         ) {
  36.             $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  37.         }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ahora bien... Si nos ceñimos exclusivamente a lo que pides: "Yo lo que quiero es que si mi variable string $titulo empieza por LEY y la variable $revision_consolidada empieza por "Ley Orgánica" no ejecute la función Grep_file", sería así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # si mi $titulo empieza por LEY y la $revision_consolidada empieza por "Ley Orgánica", no ejecute la función Grep_file
  2. if ($titulo =~ /^LEY/i  and  $revision_consolidada =~ /^Ley Orgánica/) {
  3.     ...;
  4. }
  5. else {
  6.     Grep_file( $dir_file, $revision_consolidada );
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
O así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. unless ($titulo =~ /^LEY/i  and  $revision_consolidada =~ /^Ley Orgánica/) {
  2.     Grep_file( $dir_file, $revision_consolidada );
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
En este caso no se puede usar index(), porque requieres que las palabras a buscar estén "al principio", por eso hemos puesto '^' en los patrones.

De todas maneras... como no conozco todas las reglas, no sé si se puede reducir aún más.

Por lo que veo, cada vez que preguntas por un $titulo, compruebas que en la $revision_consolidada no aparezca un título de los anteriores. Quizás se pueda aprovechar para hacer algo más óptimo.
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

Re: if con patrón

Notapor rraulqm92 » 2014-10-08 10:51 @493

¡¡He conseguido que funcione!!

¡Mil gracias, de verdad!

Pego el código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $titulo = Extrae_titulo($id_disposicion);
  2.  
  3. foreach my $revision_consolidada (@revisiones) {
  4.  
  5.     my $file_concuerda = 0;
  6.  
  7.     if ( $titulo =~ /^Constitución/ ) {
  8.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  9.     }
  10.     elsif ( $titulo =~ /^Tratado/ and $revision_consolidada !~ /^Constitución/ ) {
  11.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  12.     }
  13.     elsif ( $titulo =~ /^Ley Orgánica/ and $revision_consolidada !~ /^Constitución|^Tratado/ ) {
  14.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  15.     }
  16.     elsif ( $titulo =~ /^LEY/ and $revision_consolidada !~ /^Ley Orgánica|^Constitución|^Tratado/ ) {
  17.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  18.     }
  19.     elsif ( $titulo =~ /^Real Decreto-ley/ and $revision_consolidada !~ /^Ley|^Ley Orgánica|^Constitución|^Tratado/ )
  20.     {
  21.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  22.     }
  23.     elsif ( $titulo =~ /^Real Decreto Legislativo/
  24.         and $revision_consolidada !~ /^Ley|^Real Decreto-ley|^Constitución|^Tratado/ ) {
  25.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  26.     }
  27.     elsif ( $titulo =~ /^Real Decreto/
  28.         and $revision_consolidada !~ /^Ley|^Real Decreto Legislativo|^Real Decreto-ley|^Constitución|^Tratado/i ) {
  29.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  30.     }
  31.     elsif ( $titulo =~ /^Orden/ and $revision_consolidada !~ /^Ley|^Real Decreto|^Ley|^Constitución|^Tratado/i ) {
  32.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  33.     }
  34.     elsif ( $titulo =~ /^Circular|^Resolución|^Anuncio/
  35.         and $revision_consolidada !~ /^Ley|^Orden|^Real Decreto|^Constitución|^Tratado/i ) {
  36.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  37.     }
  38.  
  39.     if ( $file_concuerda eq 1 ) {
  40.  
  41.         #print "COMPRUEBO MACHING PORQUE LA DISPOSICIÓN COINCIDE";
  42.  
  43.         my $id_maching = Sacar_maching($revision_consolidada);
  44.  
  45.         Insert_coincide( $id_disposicion, $id_maching, $dia );
  46.  
  47.     }
  48. }
  49.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2014-10-08 11:31 @522, editado 1 vez en total
Razón: Admiraciones; Formateado de código con Perltidy
rraulqm92
Perlero nuevo
Perlero nuevo
 
Mensajes: 11
Registrado: 2014-10-07 04:29 @228

Re: if con patrón

Notapor explorer » 2014-10-08 11:38 @526

Mejor así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $titulo = Extrae_titulo($id_disposicion);
  2.  
  3. foreach my $revision_consolidada (@revisiones) {
  4.  
  5.     my $file_concuerda = 0;
  6.  
  7.     if ( $titulo =~ /^Constitución/ ) {
  8.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  9.     }
  10.     elsif ( $titulo =~ /^Tratado/ and $revision_consolidada !~ /^Constitución/ ) {
  11.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  12.     }
  13.     elsif ( $titulo =~ /^Ley Orgánica/
  14.         and $revision_consolidada !~ /^Constitución|^Tratado/ ) {
  15.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  16.     }
  17.     elsif ( $titulo =~ /^LEY/
  18.         and $revision_consolidada !~ /^(?:Ley Orgánica|Constitución|Tratado)/ ) {
  19.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  20.     }
  21.     elsif ( $titulo =~ /^Real Decreto-ley/
  22.         and $revision_consolidada !~ /^(?:Ley|Constitución|Tratado)/ ) {
  23.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  24.     }
  25.     elsif ( $titulo =~ /^Real Decreto Legislativo/
  26.         and $revision_consolidada !~ /^(?:Ley|Real Decreto-ley|Constitución|Tratado)/ ) {
  27.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  28.     }
  29.     elsif ( $titulo =~ /^Real Decreto/
  30.         and $revision_consolidada !~ /^(?:Ley|Real Decreto Legislativo|Real Decreto-ley|Constitución|Tratado)/i ) {
  31.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  32.     }
  33.     elsif ( $titulo =~ /^Orden/
  34.         and $revision_consolidada !~ /^(?:Ley|Real Decreto|Constitución|Tratado)/i ) {
  35.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  36.     }
  37.     elsif ( $titulo =~ /^Circular|^Resolución|^Anuncio/
  38.         and $revision_consolidada !~ /^(?:Ley|Orden|Real Decreto|Constitución|Tratado)/i ) {
  39.         $file_concuerda = Grep_file( $dir_file, $revision_consolidada );
  40.     }
  41.  
  42.     if ( $file_concuerda == 1 ) {
  43.  
  44.         #print "COMPRUEBO MACHING PORQUE LA DISPOSICIÓN COINCIDE";
  45.  
  46.         my $id_maching = Sacar_maching($revision_consolidada);
  47.  
  48.         Insert_coincide( $id_disposicion, $id_maching, $dia );
  49.  
  50.     }
  51. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Hemos agrupado las anclas '^' y luego metida las opciones entre paréntesis que no son de captura ((?:...)). También está cambiado el último 'eq' por un '==', ya que parece más una comparación numérica.
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 Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados