RE: Problem with form data using mod_perl and CGI.pm
> > > 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
"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
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
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
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
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