use Parse::RecDescent
Parse::RecDescent can do alot (everything)
I am restricting this talk to the problem of parsing postal address