ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> perl-mod_perl
perl-mod_perl
Re: Caching a hash - am I missing something?
by W. Tyler Gee other posts by this author
Aug 19 2008 4:40PM messages near this date
Caching a hash - am I missing something? | RE: Caching a hash - am I missing something?
On Tue, Aug 19, 2008 at 5:35 PM, Chris Faust <cfaust@[...].com>  wrote:
>  Hi,
> 
> 
> 
>  This might be a little off topic, I hope it's OK to post. I'm not positive
>  if mod_perl matters or not because it's a little confusing to me.
> 
> 
> 
>  I've taken over some pretty old code that I'm updating and making mp2
>  content handlers out of. The main script is a standard cgi script
>  "start.cgi" there is nothing special in the apache conf for it.
> 
> 
> 
>          <Directory /xxx/>
> 
>          SetHandler perl-script
> 
>          PerlFixupHandler My::Fixup
> 
>          PerlResponseHandler ModPerl::PerlRun
> 
>          PerlOptions +ParseHeaders
> 
>          DirectoryIndex start.cgi
> 
>          Options +ExecCGI +Indexes
> 
>          allow from all
> 
>          </Directory>
> 
> 
> 
>  start.cgi calls a custom module (use CustomModule;) which exports a bunch of
>  subs, for example foobar and all over the place in the subs that are
>  exported from CustomModule I see code like
> 
> 
> 
> 
> 
>  sub foobar {
> 
>              my $key = @_;
> 
> 
> 
>              if ($cache{$key}) {
> 
>                          return $cache{$key};
> 
>              } else {
> 
>                          my $do_some_query = xxxx;
> 
>                          $cache{$key} = $do_some_query_results
> 
>                          return $cache{$key};
> 
>              }
> 
>  }
> 
> 
> 
>  My question is isn't the "else" in foobar always going to be true anyplace
>  where start.cgi is calling "&foobar('somekey')"??????
> 
>  I don't understand how %cache could already be populate from a previous
>  browser request or something? I'm I just missing something stupid?

%cache is defined outside the scope of the sub so it will persist for
the lifetime of the apache server.  The very first time
foobar('somekey') is called it will do the query lookup, the next time
it will return from cache.

> 
> 
> 
>  FYI this was all running before on a version of Debian with old apache and
>  old mod_perl (early 1.99 and 2.0.x). I've updated mod_perl to 2.0.2 and
>  apache to 2.2 and everything still works.
> 
> 
> 
>  TIA!!
> 
>  -Chris
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 



-- 
~Tyler
Thread:
Chris Faust
W. Tyler Gee
Cfaust-Dougot
aw

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved