je cherche à comparer deux listes de mots (l1 et l2) afin de trouver
quels sont les mots de la liste l2 qui n'ont pas de correspondance
avec la liste l1.
Voici où j'en suis :
use strict;
use diagnostics;
my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
my $arg="";
my $t="";
foreach $arg(@l1){
foreach my $t(@l2){
if ($arg eq $t){
print " Fichier(s) identique(s) :\t$t\t\t$arg\n";
print "La valeur qui est supprime est :\t$t\n";
last; # sort de la boucle si $arg = $t
}else{
print " Fichier(s) different(s) :\t$arg\t\t$t\n";
}
}
print "Fin de cycle:\t$t\n";
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
root
On Wed, 17 Dec 2003 04:51:52 -0800, RPP wrote:
Bonjour,
je cherche à comparer deux listes de mots (l1 et l2) afin de trouver quels sont les mots de la liste l2 qui n'ont pas de correspondance avec la liste l1. Voici où j'en suis :
use strict; use diagnostics;
my @l1=qw( deux quatre setp); my @l2=qw( un deux trois quatre cinq six setp huit); my $arg=""; my $t="";
foreach $arg(@l1){ foreach my $t(@l2){ if ($arg eq $t){ print " Fichier(s) identique(s) :t$ttt$argn"; print "La valeur qui est supprime est :t$tn"; last; # sort de la boucle si $arg = $t }else{ print " Fichier(s) different(s) :t$argtt$tn"; } } print "Fin de cycle:t$tn"; }
En utilisant un hash ?
my @l1 = qw( deux quatre sept ); my @l2 = qw( un deux trois quatre cinq six sept huit );
my %l1 = map { $_ => 1 } @l1; my @diff = grep { not exists $l1{$_} } @l2;
print "diff = ", join(":", @diff), "n";
Résultat :
diff = un:trois:cinq:six:huit
On Wed, 17 Dec 2003 04:51:52 -0800, RPP wrote:
Bonjour,
je cherche à comparer deux listes de mots (l1 et l2) afin de trouver
quels sont les mots de la liste l2 qui n'ont pas de correspondance
avec la liste l1.
Voici où j'en suis :
use strict;
use diagnostics;
my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
my $arg="";
my $t="";
foreach $arg(@l1){
foreach my $t(@l2){
if ($arg eq $t){
print " Fichier(s) identique(s) :t$ttt$argn";
print "La valeur qui est supprime est :t$tn";
last; # sort de la boucle si $arg = $t
}else{
print " Fichier(s) different(s) :t$argtt$tn";
}
}
print "Fin de cycle:t$tn";
}
En utilisant un hash ?
my @l1 = qw( deux quatre sept );
my @l2 = qw( un deux trois quatre cinq six sept huit );
my %l1 = map { $_ => 1 } @l1;
my @diff = grep { not exists $l1{$_} } @l2;
je cherche à comparer deux listes de mots (l1 et l2) afin de trouver quels sont les mots de la liste l2 qui n'ont pas de correspondance avec la liste l1. Voici où j'en suis :
use strict; use diagnostics;
my @l1=qw( deux quatre setp); my @l2=qw( un deux trois quatre cinq six setp huit); my $arg=""; my $t="";
foreach $arg(@l1){ foreach my $t(@l2){ if ($arg eq $t){ print " Fichier(s) identique(s) :t$ttt$argn"; print "La valeur qui est supprime est :t$tn"; last; # sort de la boucle si $arg = $t }else{ print " Fichier(s) different(s) :t$argtt$tn"; } } print "Fin de cycle:t$tn"; }
En utilisant un hash ?
my @l1 = qw( deux quatre sept ); my @l2 = qw( un deux trois quatre cinq six sept huit );
my %l1 = map { $_ => 1 } @l1; my @diff = grep { not exists $l1{$_} } @l2;
print "diff = ", join(":", @diff), "n";
Résultat :
diff = un:trois:cinq:six:huit
dominix
RPP wrote:
Bonjour,
je cherche à comparer deux listes de mots (l1 et l2) afin de trouver quels sont les mots de la liste l2 qui n'ont pas de correspondance avec la liste l1. Voici où j'en suis :
use strict; use diagnostics;
my @l1=qw( deux quatre setp); my @l2=qw( un deux trois quatre cinq six setp huit); my $arg=""; my $t="";
foreach $arg(@l1){ foreach my $t(@l2){ if ($arg eq $t){ print " Fichier(s) identique(s) :t$ttt$argn"; print "La valeur qui est supprime est :t$tn"; last; # sort de la boucle si $arg = $t }else{ print " Fichier(s) different(s) :t$argtt$tn"; } } print "Fin de cycle:t$tn"; }
Merci pour votre aide.
my @l1=qw( deux quatre setp); my @l2=qw( un deux trois quatre cinq six setp huit); $= ' '; my %seen; for (@l1) {$seen{$_}= "1"} for (@l2) {$seen{$_}.= "2" } for (keys %seen){print if $seen{$_}=~/^2/};
-- dominix
RPP wrote:
Bonjour,
je cherche à comparer deux listes de mots (l1 et l2) afin de trouver
quels sont les mots de la liste l2 qui n'ont pas de correspondance
avec la liste l1.
Voici où j'en suis :
use strict;
use diagnostics;
my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
my $arg="";
my $t="";
foreach $arg(@l1){
foreach my $t(@l2){
if ($arg eq $t){
print " Fichier(s) identique(s) :t$ttt$argn";
print "La valeur qui est supprime est :t$tn";
last; # sort de la boucle si $arg = $t
}else{
print " Fichier(s) different(s) :t$argtt$tn";
}
}
print "Fin de cycle:t$tn";
}
Merci pour votre aide.
my @l1=qw( deux quatre setp);
my @l2=qw( un deux trois quatre cinq six setp huit);
$= ' ';
my %seen;
for (@l1) {$seen{$_}= "1"}
for (@l2) {$seen{$_}.= "2" }
for (keys %seen){print if $seen{$_}=~/^2/};
je cherche à comparer deux listes de mots (l1 et l2) afin de trouver quels sont les mots de la liste l2 qui n'ont pas de correspondance avec la liste l1. Voici où j'en suis :
use strict; use diagnostics;
my @l1=qw( deux quatre setp); my @l2=qw( un deux trois quatre cinq six setp huit); my $arg=""; my $t="";
foreach $arg(@l1){ foreach my $t(@l2){ if ($arg eq $t){ print " Fichier(s) identique(s) :t$ttt$argn"; print "La valeur qui est supprime est :t$tn"; last; # sort de la boucle si $arg = $t }else{ print " Fichier(s) different(s) :t$argtt$tn"; } } print "Fin de cycle:t$tn"; }
Merci pour votre aide.
my @l1=qw( deux quatre setp); my @l2=qw( un deux trois quatre cinq six setp huit); $= ' '; my %seen; for (@l1) {$seen{$_}= "1"} for (@l2) {$seen{$_}.= "2" } for (keys %seen){print if $seen{$_}=~/^2/};