Data::Pager(3pm)

πŸ“¦
version 0.01a Β· 4 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– Data::Pager πŸ’–

okay bestie, gather round, because this is Data::Pager β€” a User Contributed Perl Documentation page (yes, a 3pm, we love a perl module manual) β€” and it's literally the flexible data pager of your dreams. no cap. 🌸


✨ NAME ✨

Data::Pager β€” flexible data pager. that's it, that's the whole name, it does exactly what it says on the tin πŸŽ€


🌈 SYNOPSIS 🌈

okay so here's the whole vibe in one go:

use Data::Pager;

my $pager = Data::Pager->new({
  current => 100,
  perpage => 10,
  offset  => 5,
  limit   => 2000,
});

#~ accessors:
$pager->current; # 100
$pager->next;    # 101
$pager->prev;    # 99
$pager->limit;   # 2000
$pager->start;   # 1 # not typical start of a programmer
$pager->final;   # \
                     # 400 (which denotes 2000 / 5 pager links)
$pager->end;     # /
$pager->from;    # 495 (may serve in SQL LIMIT clause)
$pager->to;      # 500 (may serve in SQL LIMIT clause)
$pager->list;    # 95  96  97  98  99  100  101  102  103  104  105

look at those accessors go πŸ’… every single one of them is just handing you the number you asked for. iconic behaviour, honestly.


πŸ¦‹ DESCRIPTION πŸ¦‹

This class implements the familiar pager where the current position is centered. like, the current page is the main character and everyone else is just supporting cast around it. periodt. πŸ‘‘


πŸŽ€ CONSTRUCTOR πŸŽ€

new

my $pager = Data::Pager->new({
  current => 1,      # this is the current pager position
  perpage => 10,     # the pager consists of this number of links (defaults to 10)
  offset  => 5,      # this is the number of results (fetched from the DB for example) per result
  limit   => 100,    # how far is the pager allowed
});

# sample output from html table:

id ... ..... ...
1. ... ..... ...
2. ... ..... ...
3. ... ..... ...
4. ... ..... ...
5. ... ..... ...

1 2 3 4 5 6 7 8 9 10

so you pass in a hashref of vibes: current (where you're standing rn), perpage (how many links the pager gets β€” defaults to 10), offset (how many results per result, like fetched from the DB for example), and limit (how far the pager is even allowed to go, bestie, we have boundaries).

Returns the object β€” or undef if the current position is beyond the limit. 🫢


πŸ’… METHODS πŸ’…

current

$pager->current();

Returns the current pager position. simple. clean. no notes. ✨

set_current($digit)

$pager->set_current(850);
$pager->set_current(850)->next();

Sets the current pager position. Returns the pager object on succes, undef on false. (yes it says "succes", we're keeping it, it's part of the lore 😭) also yes you can chain it, go off.

next

Returns the next pager position β€” or undef if this is the last one. sad but necessary. πŸ’€

prev

Returns the previous pager position β€” or undef if this is the first one. nothing before the beginning, that's just physics. πŸ™ˆ

start

Returns 1 β€” the start pager position. yes, literally 1. it's giving humble.

end

Returns the end pager position.

first

Returns the first pager position for this result set.

last

Returns the last pager position for this result set.

from

'1' => {
  'to' => 5,
  'next' => 2,
  'prev' => undef,
  'from' => 0
},
'2' => {
  'to' => 10,
  'next' => 3,
  'prev' => 1,
  'from' => 5
},
...

Returns the start result this pager position refers to. look at that little data structure glowing, prev being undef at the very start like yeah babe you're the origin story. 🌱

to

Returns the end result this pager position refers to.

list

@_ = $pager->list;
$_ = $pager->list;

Returns the pager links for this result set. In list context it returns the resulting list. In scalar context it returns a reference to the resulting list. context-sensitive king πŸ‘‘

# note the alignment

$pager->set_current(10);
print $pager->list;         # 6 7 8 9  [10]  11 12 13 14 15
$pager->set_current(33);
print $pager->list;         # 28 29 30 31 32 [33] 34 35 36 37 38

see how [10] and [33] sit dead center? that's the alignment, bestie, that's the whole point, and it is so satisfying. 🧚


πŸ‘€ SEE ALSO πŸ‘€

  • Data::Page

your other pager bestie, go say hi 🫢


πŸ’€ BUGS πŸ’€

What BUGS?

literally the most unbothered section in any manpage ever written. the confidence. the audacity. we stan. 😭


πŸ‘‘ AUTHOR πŸ‘‘

Vidul Nikolaev Petrov, vidul@cpan.org β€” thank you for the pager, king, we owe you our whole paginated existence 🫑


This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.


okay that's the whole page!! perl v5.40.1, dated 2025-09-24, and that's the Data::Pager(3pm) footer energy right there. go paginate something gorgeous, bestie, you got this πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…

πŸ“¦ where this page comes from