• Publicidad

Buscar valor $string dentro de matriz

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

Buscar valor $string dentro de matriz

Notapor Skull118 » 2013-10-04 13:00 @583

Buenos días, expertos de Perl en Español, acudo nuevamente a ustedes debido a que tengo una complicación bastante compleja, la cual googleé, he incluso busqué en el foro, con resultados negativos.

Tengo una matriz de la siguiente manera.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @vmatriz=qw(val1 val2 val3 val4);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Tengo un archivo de texto el cual paso a una variable matriz de la siguiente manera:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. my @a=glob("*.txt");
  4. foreach$a(@a){
  5.   open(A, "$a");
  6.   my @L=<A>;
  7.   foreach(@L){
  8.      # aquí necesito buscar si en la línea actual contiene algún valor de la matriz @vmatriz
  9.   }
  10. }
  11.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


De antemano, muchas gracias por la ayuda. Cabe resaltar que utilizo Perl para Windows. Éxitos.
Skull118
Perlero nuevo
Perlero nuevo
 
Mensajes: 53
Registrado: 2013-03-21 13:38 @610

Publicidad

Re: Buscar valor $string dentro de matriz

Notapor explorer » 2013-10-04 19:24 @850

Se puede construir una expresión regular con los valores:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $matrizreg = join '|', @vmatriz;
  2. $matrizreg = qr/$matrizreg/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y luego meterla en el código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. use autodie;
  4.  
  5. for my $archivo (glob("*.txt")) {
  6.     open my $ARCHIVO, '<', $archivo;
  7.     my @LINEAS = <$ARCHIVO>;
  8.     close $ARCHIVO;
  9.  
  10.     for my $linea (@LINEAS) {
  11.         if ($linea =~ /$matrizreg/o) {
  12.             print "Lo encontré\n";
  13.         }
  14.     }
  15. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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 16 invitados