Depende de cómo sean los datos, pero otra forma de hacerlo es leer todas las entradas de un archivo y meterlas en un
hash, y luego recorrer el otro archivo, comprobando la existencia o no de cada valor, como clave del
hash construido antes.
¿Puedes poner un ejemplo de búsqueda y de datos de la base de datos?
Respuestas:
1- grep() extrae todos los elementos coincidentes, así que aplica la expresión regular a todo el
array. Mientras, la expresión regular solo se aplica a un elemento cada vez, excepto en el caso de usar Coincidencia inteligente:
Using perl Syntax Highlighting
use v5.10.1;
...;
my @base = ("red", "blue", "green");
if (@base ~~ /$chr/) { # aplica la expresión regular a todos los elementos de @base
say "base contiene $chr"; # y devuelve verdadero si al menos uno de ellos coincide
}
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
(La coincidencia inteligente está presente desde Perl v5.10. Más información en perlsyn y perlop).
2- en el caso de grep(), sí, porque su misión es la de extraer todos los elementos de @file2 que coincidan con el patrón. En el caso de la expr. reg., como se hace dentro de un bucle, puedes parar el bucle si se da esa circunstancia (encontrar una coincidencia)
3- con un
last. También puedes usar
Using perl Syntax Highlighting
use List::MoreUtils 'any';
my @base = ("red", "blue", "green");
if ( any { /\b$chr\b/ } @base ) {
say "Encontrado $chr en base";
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4