sub load_session { ... return undef; ... } And now consider my code: ... $sid = $cookies->{license_session}->value(); # load session from db my $s = Mapps::Session->new(); $s->load_session($sid); # session is good continue if (defined $s){ $m->call_next; } #### if (defined $s->load_session($sid)) { $m->call_next; }