You could also use
DBD::SQLite in this scenario, just to store basic information. It's fast, lightweight and easy to get rolling with.
Also, I'm thinking that you want to use
Text::Diff maybe? This way you can show the users the differences between the old and new files fairly easily.
This may also be a good use for Subversion or CVS if you're consistently dealing with files and differences but want to maintain some kind of versioning scheme.
Hopefully these ideas help a little? If you possibly get into a little more detail of the whys and the overall user process everyone could make a better determination of what you want to accomplish.
muzakfetch