I would flip the data model around. One book may contain multiple chapters. They will also normally be sequentially numbered so I'd make an array of them.
#!/usr/bin/perl
use strict;
use warnings;
my %book = (
name => 'ABC - an adventure',
author => 'monk',
isbn => '123-890',
issn => '@issn',
chapter => [],
);
$book{chapter}[1] = {
name => 'Testing Times',
page => 2,
};
$book{chapter}[2] = {
name => 'Importing Hash',
page => 99,
};
print "$book{name}\n";
my $i = 1;
while (exists $book{chapter}[$i]) {
print "Ch: $i '$book{chapter}[$i]{name}' ($book{chapter}[$i]{page}
+)\n";
$i++
}
Output:
ABC - an adventure
Ch: 1 'Testing Times' (2)
Ch: 2 'Importing Hash' (99)
Cheers,
R.
Pereant, qui ante nos nostra dixerunt!