Why load two modules to call methods on the same object? - modperl

This is a discussion on Why load two modules to call methods on the same object? - modperl ; For the following to work I must load Apache2RequestRec as well as Apache2::RequestIO. package GS; use Apache2::Const -compile => ':common'; use Apache2::RequestRec ();# $r->content_type use Apache2::RequestIO (); # $r->print sub handler { my $r = shift; print $r->content_type('text/plain'); print $r->print("hello, ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: Why load two modules to call methods on the same object?

  1. Why load two modules to call methods on the same object?

    For the following to work I must load Apache2RequestRec as well as
    Apache2::RequestIO.

    package GS;
    use Apache2::Const -compile => ':common';
    use Apache2::RequestRec ();# $r->content_type
    use Apache2::RequestIO (); # $r->print

    sub handler {
    my $r = shift;
    print $r->content_type('text/plain');
    print $r->print("hello, world");
    return Apache2::Const::OK;
    }

    1;

    There must be a reason we have it this way. Any clues?

    Thanks,
    Himanshu


  2. Re: Why load two modules to call methods on the same object?




    --- On Tue, 9/16/08, Himanshu wrote:

    > From: Himanshu
    > Subject: Why load two modules to call methods on the same object?
    > To: modperl@perl.apache.org
    > Date: Tuesday, September 16, 2008, 9:00 PM
    > For the following to work I must load Apache2RequestRec as
    > well as
    > Apache2::RequestIO.
    >
    > package GS;
    > use Apache2::Const -compile => ':common';
    > use Apache2::RequestRec ();# $r->content_type
    > use Apache2::RequestIO (); # $r->print
    >
    > sub handler {
    > my $r = shift;
    > print $r->content_type('text/plain');
    > print $r->print("hello, world");
    > return Apache2::Const::OK;
    > }
    >
    > 1;
    >
    > There must be a reason we have it this way. Any clues?
    >
    > Thanks,
    > Himanshu




    I've been coding with mod_perl since 2000 (IIRC) and I don't have a straightforward answer for you.

    I suppose it's possible that rather than load up all the "non-core" behaviors (like, you know, really strange ones that nobody ever uses, like "print") you have to load those modules yourself.

    Just keep repeating to yourself, "This is to make mod_perl faster."


    One advantage you get by having to load up those modules yourself is that you can (in theory) shave off an extra millisecond or two. Somehow magickally.

    I wish mod_perl handlers were a bit more intuitive myself. The whole thing just seems very un-Perlish. Probably because it's just a very thin layer around the Apache API.

    Go figure.













  3. Re: Why load two modules to call methods on the same object?

    On Tue, Sep 16, 2008 at 11:00 PM, Himanshu wrote:
    > For the following to work I must load Apache2RequestRec as well as
    > Apache2::RequestIO.


    The idea is that you don't load what you don't need, which reduces
    memory consumption, which is the bottleneck on most mod_perl
    applications. I think it's usually not worth it, but that was the
    theory.

    - Perrin


+ Reply to Thread