Посмотрите на предложение LIMIT для MySQL. Вы могли бы иметь запрос как:
SELECT * from some_table LIMIT 0, 10;
SELECT * from some_table LIMIT 10, 10;
и т.д.. где первое число после LIMIT - это смещение, а второе число - это количество записей.
Конечно, сначала нужно выполнить запрос для общего количества и выяснить, сколько раз вам нужно будет выполнить запрос на выборку, чтобы получить все результаты.
В качестве альтернативы, в Perl вы можете использовать пакет ORM, такой как DBIx :: Class, который может обрабатывать нумерацию страниц через наборы результатов и автоматически извлекать их для вас.