Yep, HoA is what you need, keyed by name, simply unshift (if you want the second page number before the first - you specify this, but the example doesn't back it up) the page number onto the beginning of the array:
use strict;
use warnings;
use Data::Dumper;
my %HoA = ();
while (<DATA>) {
if (/(.+)\s+(\d+)\s*$/) {
unshift(@{$HoA{$1}}, $2);
}
}
print Dumper(\%HoA);
__DATA__
Barmparas, Galinos, 1120
Barmparas, Galinos, 1410
Beal, Alan, 866
Beall, Dawson, 1062
Output:
$VAR1 = {
'Beal, Alan,' => [
'866'
],
'Beall, Dawson,' => [
'1062'
],
'Barmparas, Galinos,' => [
'1410',
'1120'
]
};
|