Jonathan Vanasco wrote:
> 
> It was annoying to get my head around this.  the 'magic' part of it
> holds true and makes it confusing.
> 
> for the longest time, i would just print $var, ref $var and other stuff
> to STDERR to try and get my head around it
> 
> I never quite did completely understand it, but doing the above trained
> me to code for it

well, it's actually not all that magical :)

the :method attribute is a core perl feature - it's how you mark a
subroutine as being a method.  see

  $ perldoc attributes

for more details there.  now, since that subroutine is marked as being a
method deep within in the perl API, mod_perl can see that and do something
special with it.

hopefully you understand by now that mod_perl is really just a fancy
dispatching engine:

  browser
    -> calls apache
    -> calls mod_perl
    -> calls your perl subroutine
    -> unwind

so, when mod_perl calls your Perl*Handler it can (essentially)

  my $rc = My::PerlResponseHandler::handler();

or

  my $rc = My::PerlResponseHandler->handler();

it does the former by default, but if it sees the :method attribute set on
the handler() subroutine it uses the latter syntax.

HTH

--Geoff


Reply via email to