Re: Problem with form data using mod_perl and CGI.pm

2000-08-14 Thread stevenl

Thanks.  That seems to be the problem, accessing an outer lexical
variable in an inner subroutine.  I'm not quite sure I understand why
Perl behaves this way.  Java seems to handle this just fine with the
expected behavior.

I'm currently using:

use CGI;
my $query = new CGI();

What is the best way to define a global value like $query if I want to
'use strict'.  I really don't want to be passing $query to all my
subroutines.  I could package define it as $main::query but that seems
awkward.

-Steven


Jie Gao wrote:
 
 On Sat, 12 Aug 2000, stevenl wrote:
 
  I am running Linux 2.2, Apache 1.3.12, mod_perl 1.24, and CGI.pm 2.70.
 
  If I declare a CGI variable using 'my' (see below) and use mod_perl, I
  encounter problems with POST data.  On subsequent entries in the form,
  it continues to use the old data.
 
  The problem does not appear if I don't use 'my' (and therefore, unable
  to 'use strict'), or if I disable mod_perl from my httpd.conf file.
 
  You can test this out with these files.  First, run 'httpd -X'.  Then
  enter some data in the form.  On the next submit, the data is not
  changed.
 
  Note: The perl script displays the current HTML file plus what you
  just entered.
  ...
 
 http://perl.apache.org/guide/perl.html#my_Scoped_Variable_in_Nested_S
 
 Jie



Re: Problem with form data using mod_perl and CGI.pm

2000-08-14 Thread Stas Bekman

On Mon, 14 Aug 2000, stevenl wrote:

 Thanks.  That seems to be the problem, accessing an outer lexical
 variable in an inner subroutine.  I'm not quite sure I understand why
 Perl behaves this way.  Java seems to handle this just fine with the
 expected behavior.

Because Perl != Java. And you are lucky that the last statement
returns true :) Of course the real explanation would require some reading
from you.

 I'm currently using:
 
 use CGI;
 my $query = new CGI();
 
 What is the best way to define a global value like $query if I want to
 'use strict'.  I really don't want to be passing $query to all my
 subroutines.  I could package define it as $main::query but that seems
 awkward.

http://perl.apache.org/guide/perl.html#Using_Global_Variables_and_Shari

 -Steven
 
 
 Jie Gao wrote:
  
  On Sat, 12 Aug 2000, stevenl wrote:
  
   I am running Linux 2.2, Apache 1.3.12, mod_perl 1.24, and CGI.pm 2.70.
  
   If I declare a CGI variable using 'my' (see below) and use mod_perl, I
   encounter problems with POST data.  On subsequent entries in the form,
   it continues to use the old data.
  
   The problem does not appear if I don't use 'my' (and therefore, unable
   to 'use strict'), or if I disable mod_perl from my httpd.conf file.
  
   You can test this out with these files.  First, run 'httpd -X'.  Then
   enter some data in the form.  On the next submit, the data is not
   changed.
  
   Note: The perl script displays the current HTML file plus what you
   just entered.
   ...
  
  http://perl.apache.org/guide/perl.html#my_Scoped_Variable_in_Nested_S
  
  Jie
 



_
Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
http://stason.org/   mod_perl Guide  http://perl.apache.org/guide 
mailto:[EMAIL PROTECTED]   http://apachetoday.com http://jazzvalley.com
http://singlesheaven.com http://perlmonth.com   perl.org   apache.org





Re: Problem with form data using mod_perl and CGI.pm

2000-08-14 Thread stevenl

Stas Bekman wrote:
 
 On Mon, 14 Aug 2000, stevenl wrote:
 
  Thanks.  That seems to be the problem, accessing an outer lexical
  variable in an inner subroutine.  I'm not quite sure I understand why
  Perl behaves this way.  Java seems to handle this just fine with the
  expected behavior.
 
 Because Perl != Java. And you are lucky that the last statement
 returns true :) Of course the real explanation would require some reading
 from you.
 

I thought the whole philosophy behind Perl is that it does what you
expect it to do and this is in no way what anyone would expect it to
behave!

Thanks for the link.  I guess I'll read up on this guide more carefully
before I ask any further questions.

-Steven



  I'm currently using:
 
  use CGI;
  my $query = new CGI();
 
  What is the best way to define a global value like $query if I want to
  'use strict'.  I really don't want to be passing $query to all my
  subroutines.  I could package define it as $main::query but that seems
  awkward.
 
 http://perl.apache.org/guide/perl.html#Using_Global_Variables_and_Shari
 
  -Steven
 
 
  Jie Gao wrote:
  
   On Sat, 12 Aug 2000, stevenl wrote:
  
I am running Linux 2.2, Apache 1.3.12, mod_perl 1.24, and CGI.pm 2.70.
   
If I declare a CGI variable using 'my' (see below) and use mod_perl, I
encounter problems with POST data.  On subsequent entries in the form,
it continues to use the old data.
   
The problem does not appear if I don't use 'my' (and therefore, unable
to 'use strict'), or if I disable mod_perl from my httpd.conf file.
   
You can test this out with these files.  First, run 'httpd -X'.  Then
enter some data in the form.  On the next submit, the data is not
changed.
   
Note: The perl script displays the current HTML file plus what you
just entered.
...
  
   http://perl.apache.org/guide/perl.html#my_Scoped_Variable_in_Nested_S
  
   Jie
 
 
 _
 Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
 http://stason.org/   mod_perl Guide  http://perl.apache.org/guide
 mailto:[EMAIL PROTECTED]   http://apachetoday.com http://jazzvalley.com
 http://singlesheaven.com http://perlmonth.com   perl.org   apache.org



RE: Problem with form data using mod_perl and CGI.pm

2000-08-14 Thread Bryan McGuire

"perldoc perlref" addresses the nested subroutine problem, and
suggests using something like this:

  local *printQueryParams = sub {

instead of this:

  sub printQueryParams {

The assignment to the typeglob is pretty slick in that it let's you
call the anonymous subroutine as if it were a subroutine named
printQueryParams.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Monday, August 14, 2000 3:44 AM
To: Stas Bekman
Cc: Jie Gao; [EMAIL PROTECTED]
Subject: Re: Problem with form data using mod_perl and CGI.pm


Stas Bekman wrote:

 On Mon, 14 Aug 2000, stevenl wrote:

  Thanks.  That seems to be the problem, accessing an outer lexical
  variable in an inner subroutine.  I'm not quite sure I understand
why
  Perl behaves this way.  Java seems to handle this just fine with
the
  expected behavior.

 Because Perl != Java. And you are lucky that the last statement
 returns true :) Of course the real explanation would require some
reading
 from you.


I thought the whole philosophy behind Perl is that it does what you
expect it to do and this is in no way what anyone would expect it to
behave!

Thanks for the link.  I guess I'll read up on this guide more
carefully
before I ask any further questions.

-Steven



  I'm currently using:
 
  use CGI;
  my $query = new CGI();
 
  What is the best way to define a global value like $query if I
want to
  'use strict'.  I really don't want to be passing $query to all my
  subroutines.  I could package define it as $main::query but that
seems
  awkward.


http://perl.apache.org/guide/perl.html#Using_Global_Variables_and_Shar
i

  -Steven
 
 
  Jie Gao wrote:
  
   On Sat, 12 Aug 2000, stevenl wrote:
  
I am running Linux 2.2, Apache 1.3.12, mod_perl 1.24, and
CGI.pm 2.70.
   
If I declare a CGI variable using 'my' (see below) and use
mod_perl, I
encounter problems with POST data.  On subsequent entries in
the form,
it continues to use the old data.
   
The problem does not appear if I don't use 'my' (and
therefore, unable
to 'use strict'), or if I disable mod_perl from my httpd.conf
file.
   
You can test this out with these files.  First, run
'httpd -X'.  Then
enter some data in the form.  On the next submit, the data is
not
changed.
   
Note: The perl script displays the current HTML file plus what
you
just entered.
...
  
  
http://perl.apache.org/guide/perl.html#my_Scoped_Variable_in_Nested_S
  
   Jie
 


_
 Stas Bekman  JAm_pH --   Just Another mod_perl
Hacker
 http://stason.org/   mod_perl Guide
http://perl.apache.org/guide
 mailto:[EMAIL PROTECTED]   http://apachetoday.com
http://jazzvalley.com
 http://singlesheaven.com http://perlmonth.com   perl.org
apache.org




RE: Problem with form data using mod_perl and CGI.pm

2000-08-14 Thread Tom Mornini

   What is the best way to define a global value like $query if I want to
   'use strict'.  I really don't want to be passing $query to all my
   subroutines.  I could package define it as $main::query but that seems
   awkward.

 "perldoc perlref" addresses the nested subroutine problem, and
 suggests using something like this:
 
   local *printQueryParams = sub {
 
 instead of this:
 
   sub printQueryParams {
 
 The assignment to the typeglob is pretty slick in that it let's you
 call the anonymous subroutine as if it were a subroutine named
 printQueryParams.

How about just:

use vars qw ( $query );

to define a package global?

-- 
-- Tom Mornini
-- InfoMania Printing and Prepress




Re: Problem with form data using mod_perl and CGI.pm

2000-08-13 Thread Jie Gao

On Sat, 12 Aug 2000, stevenl wrote:

 I am running Linux 2.2, Apache 1.3.12, mod_perl 1.24, and CGI.pm 2.70.
 
 If I declare a CGI variable using 'my' (see below) and use mod_perl, I
 encounter problems with POST data.  On subsequent entries in the form,
 it continues to use the old data.
 
 The problem does not appear if I don't use 'my' (and therefore, unable
 to 'use strict'), or if I disable mod_perl from my httpd.conf file.
 
 You can test this out with these files.  First, run 'httpd -X'.  Then
 enter some data in the form.  On the next submit, the data is not
 changed.
 
 Note: The perl script displays the current HTML file plus what you
 just entered.
 ...
 
http://perl.apache.org/guide/perl.html#my_Scoped_Variable_in_Nested_S



Jie