#!/usr/local/bin/perl
use strict;
use warnings;
use IO::File;
my $addressbook = "addressbook";
my $book = new IO::File $addressbook
or die "Cannot open $addressbook: $!\n";
my @addresses;
while (<$book>) {
chomp;
my ($fullname, $address) = split /:/;
my ($firstname, $lastname) = $fullname =~ m{(.*)\s(.*)};
my %record = (
firstname => $firstname,
lastname => $lastname,
address => $address,
);
push(@addresses, \%record);
}
$book->close;
foreach my $address
(sort { $a->{lastname} cmp $b->{lastname} }
@addresses) {
printf "%-20s | %s\n",
$address->{lastname} . ", " . $address->{firstname},
$address->{address};
}
|