I've been playing around with Infrared Remote data lately. I wanted to use LIRC to parse the data, but the problem was that I was working with a lot of custom IR protocols, and I didn't want to use the usual LIRC data flow of mapping codes to buttons to executable programs. If you want the usual way, try Lirc::Client.
Instead, I decided to parse the pulse/space data right out of the "mode2" program. This is what's done by Linux::IRPulses.
This will probably change at some point to parsing data directly from /dev/lirc*, but that will require a few C bindings.