Bonjour à tous,
Ici mon script :
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
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"; } }
Le résultat ce ces lignes :
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"; } }
La question :MARTIN_RENE
Liste des matières :
Informatique
Informatique
Informatique materiel
Informatique bureautique
Liste des classes :
1 ANG
T ANG
2 A
2 A
Est-ce possible de supprimer les doublons pour classe et matière
D'avance merci,
Maloute.
Partager