Hello,

I'm playing around with hooks in CGI::Application and am running into behavior 
that I don't understand.

Given this script (suitable to run from the command line):

[...@unixbox1:~]> cat testcgiapp.pl
#!/usr/bin/perl

use strict;
use warnings;

my $webapp = Private::Webapp->new();
$webapp->run();

package Private::Webapp;

use base 'CGI::Application';

# Neither of these work -- why?
__PACKAGE__->add_callback('prerun', \&hook_prerun);
Private::Webapp->add_callback('prerun', \&hook_prerun);

sub setup {
        my $self = shift;

        $self->start_mode('begin');
        $self->mode_param('rm');
        $self->run_modes(
                begin => 'do_begin'
        );
        
        # this works
        $self->add_callback('prerun', \&hook_prerun);
}

sub do_begin {
        my $self = shift;

        my $output = "Hello, CGI::Application!\n";
        return $output;
}

sub hook_prerun {
        my $self = shift;

        print STDERR "hook_prerun\n";
}

1;

[...@unixbox1:~]> perl testcgiapp.pl
hook_prerun
Content-Type: text/html; charset=ISO-8859-1

Hello, CGI::Application!

Why don't my package/class level hooks work but my instance/self hook does?  
I'm 
not actually trying to register all three hooks; just one at a time.  I 
included 
all three to demonstrate what I've tried.

Todd



      

#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to