[cgiapp] can AUTOLOAD sub be named AUTOLOAD?
rjmorris12 at gmail.com
rjmorris12 at gmail.com
Thu Apr 17 23:45:05 EDT 2008
Darin McBride <dmcbride at naboo.to.org> wrote on Wed, Apr 16, 2008 at 10:38:19AM -0600:
> My suggestion is that AUTOLOAD is not, and never has been, a runmode. No one
> should be able to load http://myapp.net/?rm=AUTOLOAD. I've not tested to see
> if that actually calls the AUTOLOAD runmode or not, but it shouldn't. (I
> suspect it does.)
I agree that AUTOLOAD shouldn't be treated as a runmode. And yes, loading
http://myapp.net/?rm=AUTOLOAD does call the AUTOLOAD runmode. The sub gets
called with an undefined value for its second argument.
> Instead, if I want the fallback, I should not be setting a run_mode, I should
> be setting a fallback:
>
> $self->fallback_mode('my_catchall_sub');
>
> This is something that should be callable only in cases where the fallback is
> required.
I think this is an excellent solution. Thanks for the patch. I did have one
problem with it, though. I got a syntax error on this line (in Perl 5.8.8):
return $self->{__FALLBACK_MODE} || {$self->run_modes()}{AUTOLOAD};
Just to get it running, I changed it to this (though I'm guessing there's a
slicker way):
if ($self->{__FALLBACK_MODE}) {
return $self->{__FALLBACK_MODE};
}
else {
my %rmodes = ($self->run_modes());
return $rmodes{AUTOLOAD};
}
More information about the cgiapp
mailing list