I think that's quite an ambitious project.
Validating can be a huge pain mainly in acquiring the appropriate data (zipcodes,postal codes, etc) for all places in the world.
I think you will end up validating it like an email. (It's valid in form but no way to know until you send it!)
How will you be getting this information? You might be better coming up with the elements of addresses and
working those elements into "definitions". I don't know if address requirements vary within different regions of any countries,
but working backwards like this, you could 1. use it to validate information as being valid in form and 2. use these definitions
in other programs to acquire the appropriate data.
You may or may not find the following modules helpful
Data::Address::Standardize
Scrape::USPS::ZipLookup
ISO 3166 Country Codes
Good luck. I'd be interested in seeing what you come up with.
-Lee
"To be civilized is to deny one's nature."