Have a look at this:

http://www.perl.com/pub/a/2002/05/07/mod_perl.html

Perrin is probably right that it's a closure issue. Take a good look at your code.

Incidentally, I've found it useful to do a Google search on incomprehensible error messages ..:)

d

CraigT wrote:
Perrin,

I'm not sure I'm communicating very well. And I'm not sure I understand what
you said.  Let me outline what I'm experiencing again.  I have a page with
multiple anchors.    I saw this problem immediately with 3 of these anchors
when I invoked the page under perl-run (PerlRun). The 3 anchors follow. I've left the off on purpose so the anchor will show.

 CLASS='zzz tn' HREF='dashboard.cgi?str=$govlevel:3'
ONMOUSEOVER=\"window.status='$glines[2] Key Indicators';return true\"
ONMOUSEOUT=\"window.status=' ';return true\">Dashboard</
values passed = $govlevel:3 = SKY:3

 CLASS='l2' HREF='ss.cgi?str=$govlevel' ONMOUSEOVER=\"window.status='Sights
And Sounds Of $glines[0]';return true\" ONMOUSEOUT=\"window.status=' ';return true\">Sights/Sounds</

values passed = $govlevel = SKY

 CLASS='l2' HREF='vumenu.cgi?str=$govlevel~$vufiles'
ONMOUSEOVER=\"window.status='Special Interest, Measure Views';return true\"
ONMOUSEOUT=\"window.status='  ';return true\">Special Views</

values passed = $govlevel~$vufiles = SKY~C:/Steep/USA
Data/State/KY/birth.view!C:/Steep/USA
Data/State/KY/children.view!C:/Steep/USA
Data/State/KY/children2.view!C:/Steep/USA
Data/State/KY/children3.view!C:/Steep/USA
Data/State/KY/children4.view!C:/Steep/USA
Data/State/KY/healthybirths.view!C:/Steep/USA
Data/State/KY/healthybirths2.view!C:/Steep/USA
Data/State/KY/infantdeaths.view!C:/Steep/USA
Data/State/KY/infantdeathsin3counties.view!C:/Steep/USA
Data/State/KY/infantsmothers.view

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.   And I do use strict everywhere.  I then work with those
paramters in the module invoked by the anchor.   But the issue isn't about
working with what gets passed into the module invoked by the anchor.   I
don't get that far.   The problem is that what is coming across from the
invoking module to the invoked module is incorrect.

Notice that the paramters being passed to each of the 3 different physical
modules are passed after being assigned to the variable 'str'.  If I execute
any of the 3 anchors first, setting and passing 'str', and then invoke any
of the other 2 anchors, 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.   The value of 'str' will not change after
that first anchor execution until I recycle the server.   The first anchor I
executed keeps working and the other 2 keep getting passed the 'str' values
from the first anchor execution and don't work.

Also, I changed the name of 'str' to something unique in each of the 3
anchors and anchor modules.  When I do this, regardless of which one I
execute first, the first one works and then the other 2 pass nothing.  And
again, it works fine under CGI.

This code has worked correctly under CGI ever since it was written.   I've
verified that under the perl-run execution the Perl variables assigned to
'str' in all 3 anchors have the correct values before I execute the anchors. And I've verified the values in 'str' that come across when I invoke the
anchors right after the $somevar = $page->param("str") line in each of the
physical modules.  Regardless of which of these anchors I invoke first,
invoking either of the remaining 2 anchors results in the values of 'str'
set in the 1st anchor executed being passed to the modules that the
remaining 2 anchors execute.

Also, the ENV variables I had in my scratchpad where mistakenly executed
under CGI.  When I printed the ENV stuff executed under perl-run (PerlRun),
MOD_PERL is there.   You can see the perl-run ENV stuff by invoking the
following URL.
http://steepusa.no-ip.info/perl-run/stuff/prtenv.cgi

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

I hope this is clearer.  I am sort of at a loss here.  I live in a small
rural town in the foothills of the Appalachian Mountains and I have found no
community here to bounce these kinds of things off of. I've dealt with a lot of bugs over the years in a variety of languages and
this one seems strange.  Can you make any suggestions on how I might proceed
here.   The Apache 'ab' modules tells me I can improve the # of request per
second that my server can server by a facor of 3 and I would like to do it
if I can.
CraigT





Perrin Harkins wrote:
[Please keep it on the list]

On 7/3/07, Craig Tussey <[EMAIL PROTECTED]> wrote:
Thanks again for responding.  Here is the link to my
scratchpad.   Keep in mind that I was making entries
to the scratchpad in response to Clintons questions.

http://www.perlmonks.org/?viewmode=public;node_id=624649
Okay, you really aren't showing much code here.  From what you did
show, I'm guessing you're doing this:

my $govlevel = $page->param("str");
print_html();

sub print_html {
    print "blah blah $govlevel blah blah";
}

That doesn't work because the sub becomes a closure and never notices
when you create new versions of $govlevel.  The fix is to pass
$govlevel to the sub as a parameter.

- Perrin




Reply via email to