|There's more than one way to do things
On a Debian system that's not totally screwed up, parsing the output of dpkg -i is much easier than looking into /var/lib/dpkg/. There are environment variables which change the output format a bit, which you can exploit for your purposes. The man page knows more about that.
Or is there some other wrapper to a higher level API for this task?
I recommend looking at CPAN for that sort of question
Also, if anyone knows, is there some way to hook up my Perl script to be executed after whenever the package list changes?
There are hooks or triggers that are executed when packages are installed and removed (I think man-db uses that for its purposes). I'm not sure about the details, but looking into man-db or into the dpkg documentation should help.
If packages are installed via aptitude, you can also parse its log files.