On Wed, 2004-04-14 at 13:07, Jeremy Silva wrote:
> The following code will cache the CGI 
> parameters with Mod_perl.

It will cache them without mod_perl too, although you won't see it
because your CGI will exit after each request.  Your sub
increment_counter() is a closure because it uses the $cgi (and $counter)
variable that is declared outside of it's scope.  You have to pass $cgi
to every sub that you want to use it in.

Here's a cleaned up version of your code:

# counter.pl

use strict;
use warnings;

use CGI;
use Counter;

my $cgi = CGI->new();
Counter::run($cgi);

# Counter.pm

sub run {
    my $cgi = shift;
    print "Content-type: text/plain\r\n\r\n";
    print "HERE";
    my $counter = 0;
    for ( 1 .. 5 ) { increment_counter(\$counter, $cgi); }
}

sub increment_counter {
    my ($counter_ref, $cgi) = @_;
    ${$counter}++;
    my $str = $cgi->param("name");
    print "Name=$str Counter is equal to $counter !\r\n";
}

1;

- Perrin


-- 
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html

Reply via email to