The concept is truly cool, unfortunately the parser is currently flaky/buggy: one SQL query might work but another valid and seemingly simple SQL would fail with weird error message. See distribution's RT queue.
I've had to use SQL::Parser for some projects that involved analyzing select statements (from various database dialects) to determine the structure of database tables. It was relatively easy to use for my purposes (though it required a patch to handle aliases, which has since been incorporated into 1.10).
Most of the work involved analyzing the data structure returned by the structure() method, which required a little bit of experimentation to figure out what I needed (and was the only downside). The documentation is a lot of wade through.
A hash structure doesn't seem to be the most elegant way to access this information, but what is? It was enough for me to get what I needed done (and certainly saved me the work of writing a parser).