CGI::App::Plaggable拡張

オプションをimportでけるようにした。
使い方はModule::Plaggable::Fast風味。


use CGI::Application::Pluggable
no_option => [ qw/TT LogDispatch DebugScreen Session Redirect Forward/ ],
'Config::YAML' => [ qw/
config_file
config_param
config
/ ],
ConfigAuto => [ qw/
cfg_file
/]
;

ソース


package CGI::Application::Pluggable;
use strict;
use warnings;
use base 'CGI::Application';
use UNIVERSAL::require '0.10';
our $VERSION = '0.02';
sub import {
my ( $self, %options ) = @_;
my $caller = caller(0);
{
no strict 'refs';
push @{"$caller\::ISA"}, $self;
}
for my $option ( keys %options ){
if ( $option eq 'no_option') {
for my $plugin ( @{$options{$option}} ) {
my $plaggable = $self->_mk_plugin_name($plugin);
$plaggable->use or die $@;
}
}
else {
my $plaggable = $self->_mk_plugin_name($option);
$plaggable->use( @{$options{$option}} ) or die $@;
}
}
}
sub _mk_plugin_name {
my $self = shift;
my $name = shift;
return "CGI::Application::Plugin::$name";
}
1;


どうでしょうか?