Perl comparaison de tableaux!!!

Fermé
1207 Messages postés 18 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 25 janvier 2009 - 25 janv. 2009 à 14:25
 jo - 25 avril 2014 à 08:56
Bonjour,
si vous savez comment faire pour comparer 2 tableaux avec while et if exclusivement...pleeeeeeeaaaaaaase, help me!!!
exemple:
$v=0;
while ($v <=$#ver) { ( 2e tableau)

if ($t[$i]==$ver[$v]) { (esk un mot du premier tableau = un mot du 2e)
$t[$i]="schtroumpfer","\n"; (si c le cas, print ...)
}
$v=$v+1;

j'ai inseré cette boucle dans la boucle de lecture du premier tableau, et ça ne donne rien, j'en ai marre!!!

2 réponses

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 567
25 janv. 2009 à 14:43
Salut,
lami20j@debian:~/trash$ cat ccm_comparer_tableau.pl
#!/usr/bin/perl
use strict;use warnings;

my @tab1=qw/ a b c /;
my @tab2=qw/ a d c e /;

my $x=0;
my $y=0;

while($x<=$#tab1){
        while($y<=$#tab2){
                if($tab1[$x] eq $tab2[$y]){
                        print "$tab1[$x] égal $tab2[$y]\n";
                }
                ++$y;
        }
        ++$x;
        $y=0;
}
__END__
lami20j@debian:~/trash$ perl ccm_comparer_tableau.pl
a égal a
c égal c
1
1207 Messages postés 18 Date d'inscription vendredi 23 janvier 2009 Statut Membre Dernière intervention 25 janvier 2009
25 janv. 2009 à 19:44
merci beaucoup c super!!!!j'espere pouvoir t'aider un jour en retour...
0
use strict;
use warnings;
use Data::Dumper;



my @a1 = (1, 2, 4, 6, 7, 8);
my @a2 = (1, 2, 3, 5, 6, 7);
print join "\t", @a1;
print "\n";
print join "\t", @a2;
print "\n";
print "\n";



print "###########################\n";
print "Elément dans un tableau et pas dans l'autre \n\n";
&different (\@a1,\@a2);
print "###########################\n";
print "Elément dans un tableau et pas dans l'autre \n\n";
&different (\@a2,\@a1);


print "###########################\n";
print "Eléments commun au 2 tableaux \n\n";


my %seen;
my @common = grep {$seen{$_}++} @a1 , @a2;

print Dumper @common;
print "\tNb Commun : ".scalar @common ."\n";


print "###########################\n";


sub different{
my $ref1=shift;
my $ref2=shift;

my @a1=@$ref1;
my @a2=@$ref2;


my %a;
map($a{$_}=1,@a1); # create %a with elements from @a1
my @diff=grep(!defined($a{$_}),@a2); # returns those elements of @a2 that +don't
# have a hash element in %a1 therefore they
# do not exist in @a1.
print Dumper @diff;

print "\tNb Diff : ".scalar @diff ."\n";



}
1