[PERL] Test appartenance a liste
Qwerti
Messages postés
166
Statut
Membre
-
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
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
- Liste déroulante excel - Guide
- Test performance pc - Guide
- Steam deck oled test - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- 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 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