Nice work, although it is a bit slow: (avg 5 seconds per address parsing)
date && perl geo.pl && date
Sat Dec 29 16:18:30 UTC 2018
country => united kingdom
suburb => shoreditch
house => the book club
city => london
postcode => ec2a 4rh
road => leonard st
house_number => 100-106
Sat Dec 29 16:18:35 UTC 2018
It seems to have a whole lot of data that would probably need to be loaded. Maybe a lot of that time is spent in initialization. Is it faster at parsing a second, third, etc. address once loaded?
By the way, a more convenient way to benchmark Perl:
perl -MBenchmark -e 'timethis(500, sub { ... your code here ... });'
date && perl geo.pl && date Sat Dec 29 16:18:30 UTC 2018 country => united kingdom suburb => shoreditch house => the book club city => london postcode => ec2a 4rh road => leonard st house_number => 100-106 Sat Dec 29 16:18:35 UTC 2018