I don't think you would call it a Perl module, and it may not do
everything you need but cvs2cl should get you started along a good path.
http://www.red-bean.com/cvs2cl/
among other things it can output to XML after it has reduced and
collated the 'cvs log' output, so you might be able query the XML for
building what you really want.
I have used it to get me information like what you are looking for,
but if I had branches I had to do "hand parsing" afterwards to figure
it out. My projects usually are not big enough to use branches (other
than the users sandboxes) and so it fully fills my needs which are
when in time di d a change take place, who did it, and what are the
names of all files involved.