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();
