I assume you are fetching the results from a database
using DBI, in which case you should take alfie's advice,
and look into the LIMIT command, if your
database supports it. However, most have something
similar in concept.
As for displaying the HTML results, you can combine
HTML::Template and HTML::Pager to get
the results you want. HTML::Pager was designed for exactly
the purpose you describe, and is quite slick. It abstracts
alot of the details for maintaining state across each
script execution.