# exercice 6
use strict;
use warnings;
my %pers;
# importer les donnees
while (<>) {
chomp;
my ($nom, $age, $adresse) = split ' ', $_, 3;
$pers{$nom} = {
nom => $nom,
age => $age,
adresse => $adresse,
};
}
#use Data::Dumper;
#print Dumper \%pers;
my ($nom, $age);
my $etape = 0;
afficher_tout();
$etape++; print "$etape. Un an passe...:\n";
for $nom (sort keys %pers) {
$pers{$nom}->{age}++;
}
afficher_tout();
$etape++; print "$etape. Tout le monde trie par age:\n";
for $nom (sort { $pers{$a}->{age} <=> $pers{$b}->{age} } keys %pers) {
affiche($pers{$nom});
}
$etape++; print "$etape. Tout le monde trie par adresse:\n";
for $nom (sort { $pers{$a}->{adresse} cmp $pers{$b}->{adresse} } keys %pers) {
affiche($pers{$nom});
}
sub afficher_tout {
$etape++; print "$etape. Les ages de tout le monde:\n";
for $nom (sort keys %pers) {
affiche($pers{$nom});
}
$etape++; print "$etape. Travailleurs:\n";
for $nom (sort keys %pers) {
$age = $pers{$nom}->{age};
if ($age >= 18 && $age < 65) {
affiche($pers{$nom});
}
}
}
sub affiche {
my $pers = shift;
printf " %-10s %4d %s\n", $pers->{nom}, $pers->{age}, $pers->{adresse},
}
No comments:
Post a Comment