Per un risultato della partita booleano o per un conteggio di occorrenze, è possibile utilizzare:
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"
};
}
uscita:
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'
Non richiede a uso un modulo.
Ovviamente è meno "espandibile" e versatile come alcuni codici sopra.
Lo uso per le risposte interattive dell'utente in modo che corrispondano a un insieme predefinito di risposte maiuscole/minuscole.
fonte
2016-02-28 16:20:03
quante volte cercherete nella lista? –
verrà cercato solo una volta in realtà. la complessità del runtime non è quello che sono veramente preoccupato per – Mike
, non che sia importante, o che sia in qualche modo correlato, ma se hai tenuto il tuo array in una serie di chiavi hash (tutte con il valore di "qualunque") puoi trovare se esiste o meno molto velocemente, anche se l'insensibilità al caso pone un problema ... oh sì e che ~~ smartmatch è lento come può essere ... altrimenti, attenersi alla risposta ben documentata di Ether che dimostra che la risposta più semplice non è t sempre la risposta migliore, anche se non è dal tuo punto di vista, la risposta corretta. – osirisgothra