There are Proc::Application::* files. example of Proc::Application usage: package Program; use Proc::Application; @Program::ISA = qw(Proc::Application); sub main { print "Done\n"; sleep ( 1000 ); } sub options { my $this = shift; $options = $this->SUPER::options(); $options->{test} = { template => 'test=s', description => 'tralivali' }; $options; } package main; Program->new->run(); example of Proc::Application::Daemon usage: package Program; use Proc::Application::Daemon; use base qw(Proc::Application::Daemon); sub handler { my ( $this, $socket ) = @_; $socket->print ( "done\n" ); $this->log->warning ( "warning" ); $this->log->notice ( "notice" ); $this->log->error ( "error" ); die "fatal"; } package main; Program->new->run();