Perl comparaison de tableaux!!!

1207 Messages postés 18 Statut Membre -  
 jo -
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!!!
Configuration: Windows Vista
Internet Explorer 7.0

2 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. 1207 Messages postés 18 Statut Membre
       
      merci beaucoup c super!!!!j'espere pouvoir t'aider un jour en retour...
      0
  2. jo
     
    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