in reply to Is this a reasonable data structure?

Is this really an array of hashes

No, it's a hash-of-hashes:

my %data = ( paterman_s => { title => 'Mr', first => 'Steve', last => 'Paterman', room => 101, phone => 100, email => 'stv@net.net', }, # And so on );

Also, please watch the weird Microsoft quoting characters.

----
I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer

:(){ :|:&};:

Note: All code is untested, unless otherwise stated