mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.2 KiB
71 lines
1.2 KiB
package CGI::Switch;
|
|
use Carp;
|
|
use strict;
|
|
use vars qw($VERSION @Pref);
|
|
$VERSION = '0.06';
|
|
@Pref = qw(CGI::Apache CGI); #default
|
|
|
|
sub import {
|
|
my($self,@arg) = @_;
|
|
@Pref = @arg if @arg;
|
|
}
|
|
|
|
sub new {
|
|
shift;
|
|
my($file,$pack);
|
|
for $pack (@Pref) {
|
|
($file = $pack) =~ s|::|/|g;
|
|
eval { require "$file.pm"; };
|
|
if ($@) {
|
|
#XXX warn $@;
|
|
next;
|
|
} else {
|
|
#XXX warn "Going to try $pack\->new\n";
|
|
my $obj;
|
|
eval {$obj = $pack->new(@_)};
|
|
if ($@) {
|
|
#XXX warn $@;
|
|
} else {
|
|
return $obj;
|
|
}
|
|
}
|
|
}
|
|
Carp::croak "Couldn't load+construct any of @Pref\n";
|
|
}
|
|
|
|
1;
|
|
__END__
|
|
|
|
=head1 NAME
|
|
|
|
CGI::Switch - Try more than one constructors and return the first object available
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
|
|
use CGISwitch;
|
|
|
|
-or-
|
|
|
|
use CGI::Switch This, That, CGI::XA, Foo, Bar, CGI;
|
|
|
|
my $q = new CGI::Switch;
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
Per default the new() method tries to call new() in the three packages
|
|
Apache::CGI, CGI::XA, and CGI. It returns the first CGI object it
|
|
succeeds with.
|
|
|
|
The import method allows you to set up the default order of the
|
|
modules to be tested.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
perl(1), Apache(3), CGI(3), CGI::XA(3)
|
|
|
|
=head1 AUTHOR
|
|
|
|
Andreas KE<ouml>nig E<lt>[email protected]<gt>
|
|
|
|
=cut
|