Bonjour à tous,

Ici mon script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
#!/usr/bin/perl -w
 
use strict;
use warnings;
use Data::Dumper;
 
my $InFile = "ENT_PROF.csv";
open (InFile,"$InFile") or die "Can't open file\n";
my $Ligne;
my %Table;
 
# Professeur_Nom;Professeur_Prenom;Classes;Matiere
# lecture du fichier ligne par ligne
while ($Ligne=<InFile>)
{
# lecture d'un fichier à partir de la 1er ligne
    if ($. >= 2)
    {
        if($Ligne =~ /(.*);(.*);(.*);(.*)/)
        {
            print $Ligne."\n";
            #my $cle = $1."_".$2."\n";
            my $cle = "$1_$2";
            push(@{$Table{$cle}{Classes}}, $3);
            push(@{$Table{$cle}{Matiere}}, $4);
        }
        else
        {
            print("Erreur lecture de ligne : $.");
        }
    }
}
close(InFile);
 
# pour visualiser ton tableau globalement
# print Dumper (%Table);
 
# Pour accéder à une valeur bien spécifique du tableau  
foreach my $Nom_Prenom (keys %Table)
{
        print "\n\nNOM PRENOM = " .$Nom_Prenom."\n";
        for(my $i=0; $i<@{$Table{$Nom_Prenom}{Classes}}; $i++)
        {
                print "Classes\t".${$Table{$Nom_Prenom}{Classes}}[$i]."\n";
                print "Matiere\t".${$Table{$Nom_Prenom}{Matiere}}[$i]."\n";
        }
        print "\n";
}
my @Table = keys(%Table);    # ATTENTION : %Table = hachage !
my @s =undef;
@s = grep ( /MARTIN_RENE/i, @Table);
print @s;
 
if (@s)       # on a bien récupéré quelque chose sur le nom recherché
{
    print "\n\nListe des matières :\n";
    foreach(@{$Table{MARTIN_RENE}{Matiere}})
    {
        print "$_\n";
    }
 
    print "\nListe des classes :\n";
    foreach(@{$Table{MARTIN_RENE}{Classes}})
    {
        print "$_\n";
    }
}
les lignes en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
my @Table = keys(%Table);    # ATTENTION : %Table = hachage !
my @s =undef;
@s = grep ( /MARTIN_RENE/i, @Table);
print @s;
 
if (@s)       # on a bien récupéré quelque chose sur le nom recherché
{
    print "\n\nListe des matières :\n";
    foreach(@{$Table{MARTIN_RENE}{Matiere}})
    {
        print "$_\n";
    }
 
    print "\nListe des classes :\n";
    foreach(@{$Table{MARTIN_RENE}{Classes}})
    {
        print "$_\n";
    }
}
Le résultat ce ces lignes :
MARTIN_RENE

Liste des matières :
Informatique
Informatique
Informatique materiel
Informatique bureautique

Liste des classes :
1 ANG
T ANG
2 A
2 A
La question :
Est-ce possible de supprimer les doublons pour classe et matière

D'avance merci,
Maloute.