package MyApp; use Moose; use namespace::autoclean; use Catalyst::Runtime 5.80; use Catalyst qw( -Debug ); # etc... extends "Catalyst"; __PACKAGE__->config( name => "MyApp" ); our $MY_COUNTER = 0; sub my_counter { $MY_COUNTER; } before "dispatch" => sub { $MY_COUNTER++ }; __PACKAGE__->setup(); 1; #### package MyApp::Controller::Root; use Moose; use namespace::autoclean; BEGIN { extends 'Catalyst::Controller' } __PACKAGE__->config(namespace => ''); sub counter :Local Args(0) { my ( $self, $c ) = @_; $c->response->body("Count #" . $c->my_counter); } 1; __END__ http://localhost:3000/counter