HTML::LinkExtor is good for parsing, also. You can use it for links as well as other tags if you do it right.
If you look at the grabLinks function in my
URL Checking Spider you can see an example of how I used it to grab all the links and images from a web site. (the script spiders through a series of pages, so with some modification and additional functions, you might be able to set it up as a search engine.) I hope that gives you a start, good luck.