Trouver si un terme est dans une liste

Résolu
nanou2183 Messages postés 48 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
salut,
alors j'ai une liste de mots et je voudrais comparer des données avec cette liste
pour trouver
si datas[0] est dans la liste alors ...
voilà mon code
@mot=();
foreach(@mot){
if ($mot==$datas[0])
{print "coucou";}
else{@mot=$datas[0];
print "@mot";}}
Configuration: IRIX
Mozilla 1.6

7 réponses

  1. blux Messages postés 5031 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    on suppose que c'est du Perl...

    Je ne comprends pas ton souci...

    Tu réinitialise @mot et ensuite tu le remplis en cherchant si ça existe déjà... Quel est le problème ?
    0
  2. nanou2183 Messages postés 48 Statut Membre 11
     
    bah euh ca marhce pas
    ca m'écrit quand meme les mots qui exite déjà
    0
  3. blux Messages postés 5031 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    @mot=$datas[0]
    Tu ne remplacerais pas @mot à chaque fois, par hasard ?

    Pour ajouter une ligne dans un tableau :

    push(@tableau,valeur)
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    très simple :-))
    # trouver les elements qui se trouve dans la liste A mais pas dans la liste B
    
    my %deja_vu_dansB;
    my @que_dans_A;
    
    
    @deja_vu_dansB{@B} = ();
    
    foreach $elem (@A) {
      push @que_dans_A, $elem unless exists $deja_vu_dans_B{$elem};
    }
    --
    lami20j
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    En bref vaut mieux utiliser les hashs

    nanou2183 je t'ai envoyé un mail
    0
  7. nanou2183 Messages postés 48 Statut Membre 11
     
    mais moi je veux les mots que j'ai dans A et les mettre dans B mais que dans B il n'y ait pas de doublons
    0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Voilà
    lami20j@debian:~$ cat union.pl
    #!/usr/bin/perl
    use warnings;use strict;
    
    my @A = qw/mot alphabet dans je/;
    my @B = qw/je dans arbre perl je dans/;
    my %union;
    
    $union{$_}++ foreach (@A,@B);
    
    my @union_A_B = sort keys %union;
    
    print "\@A : @A\n\@B : @B\n";
    print "A+B sans doublons : @union_A_B\n";
    
    Le résultat
    lami20j@debian:~$ perl union.pl
    @A : mot alphabet dans je
    @B : je dans arbre perl je dans
    A+B sans doublons : alphabet arbre dans je mot perl
    
    0