On 7/4/07, CraigT <[EMAIL PROTECTED]> wrote:
In each of the modules, I bring 'str' across with something like my $somevar
= $page->param("str") assigning the paramter values to a declared Perl
variable.

Okay, but do you pass $page explicitly to the sub, or do you just
define it outside the sub and use it?  If it's the latter, you have a
closure problem.

The problem is that what is coming across from the
invoking module to the invoked module is incorrect.

That sounds like a closure problem, where the sub can only see the
original version of $page.

the value of 'str' set in the first invocation
persists such that the invocation of the other 2 anchors has the 'str'
values from the first invocation.

That sounds like a closure problem too.

And
again, it works fine under CGI.

That sounds like a closure problem too.  You never notice that your
code has a scoping bug (which is what a closure problem is) in CGI
because the process exits immediately, and the cached value never gets
used again.

Also, the ENV variables I had in my scratchpad where mistakenly executed
under CGI.

Good, then I think all the mysteries are solved.

I would like to understand better the 'no longer shared' message in the
error log.

That's a message that you get when you have closure problem.  It means
the variable will be cached the first time through and never change
again.

All that you need to do to fix this problem is to pass all of the
variables that your sub needs to the sub when you call it.  If you
don't understand what I mean, post one of your subs and we'll show you
how to change it.

- Perrin

Reply via email to