You should look at my
Yet another HTML diff. I believe it is much better than HTML::Diff which uses regexps for parsing HTML so it works only for some pages. The explanation is there so I won't duplicate it now - but I need to add that I use it daily in
Active Bookmarks for checking updates to interesting sites.