Ceci constitue une action fréquemment rencontrée lors de l'écriture de scripts. La solution dépendra de la taille de la liste.
Une première solution est de parcourir le tableau et de tester chaque valeur successivement :
$in = 0; for $val (@liste) { if ($item eq $val) { $in = 1; last; } }On peut également utiliser la fonction grep qui effectue un test sur tout un tableau, et renvoie l'ensemble des éléments du tableau qui ont validé le test :
@elements = grep($_ eq $item, @liste);
Enfin, et c'est la méthode la plus rapide, mais à n'utiliser que sur des listes de taille raisonnable, on peut utiliser un tableau associatif et tester si la valeur recherchée est une clé du tableau :
for $cle (@liste) { $hash{$cle} = 1; } # ce qui peut s'ecrire de maniere moins lisible (mais plus # courte a taper...) : # %hash = map( ($_, 1), @liste ) if (defined($hash{$item})) { $in = 1; }