Soit le fichier test ci-dessous :
Chicago, USA Frankfort, Allemagne Berlin, Allemagne Washington, USA Helsinki, Finlande New York, USA
Le code perl ci-dessous va permettre de rassembler les villes par pays :
#!/usr/bin/perl
use strict;
use warnings;
my $pays;
my %table;
my $ville;
my @ville;
open(FILE, "test") or die "Impossible d'ouvrir le fichier test en lecture";
while(<FILE>) {
chomp;
($ville,$pays) = split(/, /);
push @{$table{$pays}}, $ville;
}
foreach $pays (sort keys %table) {
print "$pays : ";
@ville = @{$table{$pays}};
print join ', ', sort @ville;
print ".\n";
}
close FILE;
Résultat :
root@ks361289:~# ./test.pl Allemagne : Berlin, Frankfort. Finlande : Helsinki. USA : Chicago, New York, Washington.