Por sólo un resultado del partido booleano o para un recuento de los sucesos, se puede utilizar:
use 5.014; use strict; use warnings;
my @foo=('hello', 'world', 'foo', 'bar', 'hello world', 'HeLlo');
my $patterns=join(',',@foo);
for my $str (qw(quux world hello hEllO)) {
my $count=map {m/^$str$/i} @foo;
if ($count) {
print "I found '$str' $count time(s) in '$patterns'\n";
} else {
print "I could not find '$str' in the pattern list\n"
};
}
Salida:
I could not find 'quux' in the pattern list
I found 'world' 1 time(s) in 'hello,world,foo,bar,hello world,HeLlo'
I found 'hello' 2 time(s) in 'hello,world,foo,bar,hello world,HeLlo'
I found 'hEllO' 2 time(s) in 'hello,world,foo,bar,hello world,HeLlo'
No requiere a uso un módulo.
Por supuesto, es menos "ampliable" y versátil que algunos códigos anteriores.
Utilizo esto para que las respuestas de los usuarios interactivos coincidan con un conjunto predefinido de respuestas no sensibles.
¿cuántas veces buscará en la lista? –
solo se buscará una vez en realidad. la complejidad del tiempo de ejecución no es lo que realmente me preocupa – Mike
no es importante, o está relacionado de alguna manera, pero si mantienes tu matriz en un conjunto de claves hash (todas con el valor de 'lo que sea') puedes encontrar si existe o no mucho más rápido, aunque la insensibilidad a las mayúsculas sí plantea un problema ... oh sí, y eso ~~ smartmatch es lento, como puede ser ... de lo contrario, sigue con la bien documentada respuesta de Ether que demuestra que la respuesta más simple no es Siempre es la mejor respuesta, incluso si no es desde su punto de vista, la respuesta correcta. – osirisgothra