[PERL] Test appartenance a liste
Fermé
Qwerti
Messages postés
166
Date d'inscription
dimanche 2 septembre 2007
Statut
Membre
Dernière intervention
28 octobre 2008
-
15 juil. 2008 à 01:53
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 13 mars 2009 à 08:47
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 13 mars 2009 à 08:47
A voir également:
- [PERL] Test appartenance a liste
- Liste déroulante excel - Guide
- Test pc - Guide
- Test ram - Guide
- Liste de numéro de téléphone suspect 07 ✓ - Forum Mobile
- Annuaire inversé gratuit liste rouge - Forum Internet / Réseaux sociaux
2 réponses
Salut !
Il y a une méthode simple pour faire cela : une expression régulière.
Il suffit de savoir que l'expression "@tab" correspond à la concaténation des éléments de @tab.
On peut alors écrire :
$val="Valeur a chercher";
if ( "@tab" =~ /$val/) {
print "la valeur est dans le tableau\n";
} else {
print "la valeur n'est PAS dans le tableau\n";
}
voila !
:-)
Il y a une méthode simple pour faire cela : une expression régulière.
Il suffit de savoir que l'expression "@tab" correspond à la concaténation des éléments de @tab.
On peut alors écrire :
$val="Valeur a chercher";
if ( "@tab" =~ /$val/) {
print "la valeur est dans le tableau\n";
} else {
print "la valeur n'est PAS dans le tableau\n";
}
voila !
:-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
13 mars 2009 à 08:20
13 mars 2009 à 08:20
Salut,
D'autres possibilités
D'autres possibilités
lami20j@debian:~/trash$ cat ccm_grep.pl
#!/usr/bin/perl
#use strict;use warnings;
my @t = ( 'element 1', 'element 2', 'element 3');
print "\@t = @t\n";
print "\n","*" x 20,"\n\n";
# affiche seulement les éléments trouvés
my @cherche = grep{ /element\s*[24]/ } @t;
print "Trouvés : @cherche\n";
# ligne de séparation
print "\n","*" x 20,"\n\n";
# affiche les éléments trouvés et non trouvés
for my $e('element 2', 'element 4'){
if (grep { /$e/ } @t){
print "$e trouvé\n";
}else{
print "$e non trouvé\n";
}
}
lami20j@debian:~/trash$ perl ccm_grep.pl
@t = element 1 element 2 element 3
********************
Trouvés : element 2
********************
element 2 trouvé
element 4 non trouvé
13 mars 2009 à 08:47
"@tab" correspond à la concaténation des éléments de @tab
Pas tout à fait.
L'interpolation de @t donne la liste des éléments séparés par un espace (ce n'est pas une concaténation)
Un exemplePour traiter les éléments d'une liste on utilise en général foreach ou for.
foreach my $element(@tab){ ....traitement... }D'autres fonction qui peuvent être utiliser : grep, map, join, pack, sort, pop, push, shift, unshift, splice