Use a hash instead:
#!/usr/bin/perl
use warnings;
use strict;
my %booksByBorrower = (
adam => {"Learning Perl" => {borrowed => '2015-12-17'}},
jake => {"Programming Perl" => {borrowed => '2015-12-08'}},
john => {"Programming Perl" => {borrowed => '2015-12-12'}},
betty => {"High Order Perl" => {borrowed => '2015-12-10'}},
);
for my $name (sort keys %booksByBorrower) {
print "$name\n";
for my $book (sort keys %{$booksByBorrower{$name}}) {
print " Borrowed $book $booksByBorrower{$name}{$book}{borrowe
+d}\n";
}
}
Prints:
adam
Borrowed Learning Perl 2015-12-17
betty
Borrowed High Order Perl 2015-12-10
jake
Borrowed Programming Perl 2015-12-08
john
Borrowed Programming Perl 2015-12-12
Of course for this sort of task you should really be using a database, but that's a little heavy for such a trivial example.
Premature optimization is the root of all job security