[PERL] Test appartenance a liste
Qwerti
Messages postés
166
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour a tous,
Je voudrai savoir s'il y a une commande pour tester l'appartenance a une liste/tableau :
# J'ai une liste/tableau :
my @t = ( 'element 1', 'element 2', 'element 3');
# et disons deux variables :
my $elementTRUE = 'element 2';
my $elementFALSE = 'element 4';
Et je voudrai savoir s'il existe un moyen tres compact de tester l'appartenance des
variables $elementTRUE et $elementFLASE a @t, sans avoir a ecrire explicitement la
boucle de test.
Merci d'avance pour vos reponses !
- Qwerti.
Je voudrai savoir s'il y a une commande pour tester l'appartenance a une liste/tableau :
# J'ai une liste/tableau :
my @t = ( 'element 1', 'element 2', 'element 3');
# et disons deux variables :
my $elementTRUE = 'element 2';
my $elementFALSE = 'element 4';
Et je voudrai savoir s'il existe un moyen tres compact de tester l'appartenance des
variables $elementTRUE et $elementFLASE a @t, sans avoir a ecrire explicitement la
boucle de test.
Merci d'avance pour vos reponses !
- Qwerti.
A voir également:
- [PERL] Test appartenance a liste
- Test performance pc - Guide
- Liste déroulante excel - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test steam deck oled - Guide
- Test composant pc - Guide
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 !
:-)
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é
"@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 exemple Pour traiter les éléments d'une liste on utilise en général foreach ou for.
D'autres fonction qui peuvent être utiliser : grep, map, join, pack, sort, pop, push, shift, unshift, splice