---
name: "Catmandu::Paged"
section: "3pm"
platform: "linux"
package: "libcatmandu-perl"
version: "1.2024-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Paged"
---

# Catmandu::Paged(3pm)

Base class for packages that need paging result sets

## NAME

Catmandu::Paged - Base class for packages that need paging result sets

## SYNOPSIS

```
    # Create a package that needs page calculation
    package MyPackage;
    use Moo;
    with 'Catmandu::Paged';
    sub start {
        12; # Starting result
    }
    sub limit  {
        10; # Number of results per page
    }
    sub total {
        131237128371; # Total number of results;
    }
    package main;
    my $x = MyPackage->new;
    printf "Start page: %s\n" , $x->first_page;
    printf "Last page: %s\n" , $x->last_page;
    printf "Current page: %s\n" , $x->page;
    printf "Next page: %s\n" , $x->next_page;
```

## DESCRIPTION

Packages that use Catmandu::Paged as base class and implement the methods  `"start"`, `"limit"` and `"total"` get for free methods that can be used to do  page calculation.

## OVERWRITE METHODS

- **start()**

  Returns the index of the first item in a result page.

- **limit()**

  Returns the number of results in a page.

- **total()**

  Returns the total number of search results.

## INSTANCE METHODS

- first\_page

  Returns the index the first page in a search result containing 0 or more pages.

- last\_page

  Returns the index of the last page in a search result containing 0 or more pages.

- page\_size

  Returns the number items on the current page.

- page

  Returns the current page index.

- previous\_page

  Returns the previous page index.

- next\_page

  Returns the next page index.

- first\_on\_page

  Returns the result index of the first result on the page.

- page\_ranges

  - pages\_in\_spread

  Returns the previous pages and next pages, depending on the current position in the result set.

## SEE ALSO

Catmandu::Hits
