use Parse::RecDescent
Parse::RecDescent can do alot (everything)
I am restricting this talk to the problem of parsing postal address
You could see this as a design pattern