I recommend you give Parse::RecDescent a try, as long as parsing performance isn't likely to be a bottleneck (it's frickin' slow). If you're completely new to parsing you might pick up a copy of O'Reilly's lex & yacc. That was my source-book on a few parsing missions and it served me well.