You can use regular package inheritance(@ISA) support in perl to extend MyModule and created YourModule, where you can add any extra methods/override existing methods.
On 9/25/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Thank you. > Sorry that module of Mymodule is a public module from CPAN.I can't > modify it to add the init() and data() methods. > How to do it then?thanks again. > > -----Original Message----- > From: [EMAIL PROTECTED] > To: [EMAIL PROTECTED] > CC: modperl@perl.apache.org > Sent: Tue, 25 Sep 2007 4.52PM > Subject: Re: load large data > > [EMAIL PROTECTED] wrote: > > Thank you. > > I have added these directives in httpd.conf, > > > <Perl> > > use Mymodule; > > our $data = Mymodule->new; > > </Perl> > > > Then I run bin/apachectl configtest,but got the errors, > > > Unknown type 'Mymodule' for directive data at > > /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/Apache2/PerlSectio > > > ns.pm line 192.\n > > > Please help.Thanks. > > As with all Perl code, there is more than one way to do it. Another way > to accomplish what you are trying to do is through the use of > startup.pl, which is run during apache startup. (I don't know why that > error above is occurring so I'm posting this as an alternate approach). > > # httpd.conf > PerlPostConfigRequire /home/pennyyh/perl/lib/startup.pl > > # startup.pl > use strict; > use warnings; > > use Mymodule; > Mymodule->init; > > 1; > > ## Mymodule.pm > package Mymodule; > > use strict; > use warnings; > > our $data; > > sub new { > ... > } > > sub init { > my $class = shift; > $data = $class->new; > } > > sub data { > my $class = shift; > return $data; > } > > 1; > > then in your application you can access $data via $Mymodule::data, or > better yet access it like so: > > my $data = Mymodule->data; # this returns the object created during > # startup > > HTH, > > Fred > > > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > To: [EMAIL PROTECTED] > > CC: modperl@perl.apache.org > > Sent: Tue, 25 Sep 2007 1.42AM > > Subject: Re: load large data > > > On Mon, 24 Sep 2007 06:08:45 -0400 > > [EMAIL PROTECTED] wrote: > > >> Hello, > >> > >> I have a module,which loads large data into memory. > >> > >> my $data = Mymodule->new; > >> > >> this will take some ms to be finished. > >> > >> So I think I can create this object at startup time,and share the > >> $data acrosss all apache child processes. > >> > >> Is it possible?How can I do it? > > > Yeah you can do this in a <Perl> section at startup and > > your children can then use it. I'm assuming here that the > > info in $data doesn't change or that you're ok with having > > to restart Apache to see the changes. > > > ------------------------------------------------------- > > Frank Wiles, Revolution Systems, LLC. > > Personal : [EMAIL PROTECTED] http://www.wiles.org > > Work : [EMAIL PROTECTED] http://www.revsys.com > > > > > > ________________________________________________________________________ > > > Check out the new free AOL Email -- 2GB of storage and > industry-leading > spam and email virus protection. > > > > ________________________________________________________________________ > Check out the new free AOL Email -- 2GB of storage and industry-leading > spam and email virus protection. >