1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
use strict;
use warnings;
my $data = "a -> b
a -> cd
c -> h
c -> d
b -> k";
open my $DICO, "<", \$data or die "Ouverture impossible du fichier $!"; # meilleure syntaxe pour ouvrir un fichier
my %hachage;
while (my $ligne = <$DICO>) {
$ligne =~ s/\s+//g; # enlève tous les espaces, à ajuster si les données sont différentes de l'exemple
my ($key, $val) = split /->/, $ligne;
if (exists $hachage{$key}) {
$hachage{$key} .= ",$val"; # le hash existe déjà pour cette clef, on concatène les chaînes
} else {
$hachage{$key} = $val; # On crée le hash pour cette clef.
}
}
close $DICO;
print "$_ -> $hachage{$_}\n" for sort keys %hachage; # relecture du hachage et impression du résultat |
Partager