Why do you need if/else, when both are doing the same?
Is this
elsif( (!$post{'page'}) && (!$self->session->param('page')) ) {
$self->session->param('page' => 1);
} else {
$self->session->param('page' => 1);
}
not the same as
else{
$self->session->param('page' => 1);
}
?
And
if($post{'page'}){
...
} elsif( (!$post{'page'}) && ...) {
also looks redundant.
How about this:
my $session = $self->session;
foreach (qw[ page ] ) {
$session->param( $_ => $post{$_} ? $post{$_} : 1);
}
This also scales nicely with an increasing number of session variables (if all of them default to 1 ).