The foo() function returns an arrayref, each element of which represents a bar that I have visited. Each bar is a hashref with the following keys: =head2 name, address, phone The bar's name, address and phone number =head2 good_beer An optional key, which if present will be a hashref of beers, whose keys are the beers' names and the values are the breweries that make them. =head2 cute_staff An optional key, which if present will be an arrayref (one element per cute staff member) of hashrefs, with keys 'name', 'sex', 'preferred_sex' and 'phone'. ... For example: [ { name => 'The Traditional Pub, address => '13 Wharf St, Workingclasstown', phone => '01234 567890', good_beer => { 'Tanglefoot' => 'Badger', 'Paradise Ale' => 'Theakstons', 'Special' => 'Youngs' }, cute_staff => [ # array in case there's two with the { # same name name => 'Jill', sex => 'F', preferred_sex => 'M', phone => '01234567899' } ... ] }, ... ]