• Publicidad

Array como patron en expresion regular

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

Array como patron en expresion regular

Notapor LeoSevilla » 2020-11-11 15:06 @670

Hola, buenas a tod@s.

Pongo el código y me explico:
Este es el texto que procesa el script.
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
<a class="pais" href="">USA</a></td>
<td style="font-weight: bold; text-align:right;background-color:#FFEEAA;">dato USA</td>
<a class="pais" href="">Spain</a></td>
<td style="font-weight: bold; text-align:right;background-color:#FFEEAA;">dato Spain</td>
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


y este parte del script

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $i = 0;    
  2. my @total = ();
  3.  
  4. @regexp = (".*pais.*>(.*?)<\/a",".*FFEEAA.*>(.*?)<\/t");
  5.  
  6. procesar ($texto, \@regexp);
  7.  
  8. sub procesar{
  9.     my ($content,$regexp) = @_;
  10.     my @lineas = split "\n" , $content;
  11.     my @reg = @{$regexp};
  12.     foreach (@lineas){
  13.         if($_ =~ m{$regexp->[$i]}o){
  14.             $total[$i] = $1;
  15.             $i++;
  16.         }
  17.         if(scalar(@reg)==$i){last;}
  18.        
  19.     }
  20.     print @total;
  21. }
  22.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


La intención es que imprima : Usadato Usa
Pero lo que imprime es: UsaSpain

El caso es que al encontrar la primera coincidencia, entre en el if y recoge USA y aumenta el contador $i, pero, y aunque con un depurador, me dice que el próximo patrón es el que busco, no hace caso y recoge de nuevo el primer patrón. ¿En que me estoy equivocando?

Buenas tardes y saludos LeoSevilla.
LeoSevilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 24
Registrado: 2011-11-19 15:24 @683

Publicidad

Volver a Básico

¿Quién está conectado?

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