[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