Re: Apache::Registry() and strict
On Sun, 12 Nov 2000, Stas Bekman wrote: Hi, > > Please explain, the guide appears to recommend -w as a useful > > diagnostic technique (and the "Command Line Switches (-w, -T, > > etc)" section says -w works). > The guide is correct. -w in the shebang line is equal to 'local $^W=1' for > the file scope. and it does have an effect (for the file it's defined in). Stas is right, I mixed up -w and -T:-((( Sorry for bothering you guys... Bye, remco /--\ | Remco Schaar | | e-mail: [EMAIL PROTECTED] | \--/ South Park meets Linux: - "Oh my God, they killed init!" - "You bastards!"
Re: Apache::Registry() and strict
On Tue, 7 Nov 2000, Paul DuBois wrote: > At 10:25 AM +0100 11/7/00, [EMAIL PROTECTED] wrote: > >On Tue, 7 Nov 2000, Ron Rademaker wrote: > > > >Hi, > > > >> You would think so, however every doc I read (including the one you > >> pointed out to me) told me that perl gives me a warning: > >> > >> Variable $foo will not stay shared at > >> > >> I do use -w so I should get that warning, but I don't. The variable stays > >> defined, but it doesn't have the value of the old variable, it just passes > >> the defined($foo) test but the value has changed to an empty array (from a > >> full array). > > > >-w has no effect, read the guide again and use PerlWarn On :-) > > Please explain, the guide appears to recommend -w as a useful > diagnostic technique (and the "Command Line Switches (-w, -T, > etc)" section says -w works). The guide is correct. -w in the shebang line is equal to 'local $^W=1' for the file scope. and it does have an effect (for the file it's defined in). > > > > >Bye, > >remco > > > >/--\ > >| Remco Schaar | > >| e-mail: [EMAIL PROTECTED] | > >\--/ > > > > South Park meets Linux: > > - "Oh my God, they killed init!" > > - "You bastards!" > > _ 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: Apache::Registry() and strict
At 10:25 AM +0100 11/7/00, [EMAIL PROTECTED] wrote: >On Tue, 7 Nov 2000, Ron Rademaker wrote: > >Hi, > >> You would think so, however every doc I read (including the one you >> pointed out to me) told me that perl gives me a warning: >> >> Variable $foo will not stay shared at >> >> I do use -w so I should get that warning, but I don't. The variable stays >> defined, but it doesn't have the value of the old variable, it just passes >> the defined($foo) test but the value has changed to an empty array (from a >> full array). > >-w has no effect, read the guide again and use PerlWarn On :-) Please explain, the guide appears to recommend -w as a useful diagnostic technique (and the "Command Line Switches (-w, -T, etc)" section says -w works). > >Bye, >remco > >/--\ >| Remco Schaar | >| e-mail: [EMAIL PROTECTED] | >\--/ > > South Park meets Linux: > - "Oh my God, they killed init!" > - "You bastards!"
RE: Apache::Registry() and strict
Okay, thanks (everyone). On Tue, 7 Nov 2000, Geoffrey Young wrote: > > from the camel book: "Use of defined on aggregates (hashes and arrays) is > deprecated." > > so, change > > if (!defined @fields) > > to > > unless (@fields) > > and not only be idiomatic, but exhibit the behavior you want :) > > but seriously, it's a perl thing, not a mod_perl thing: > > #!/usr/bin/perl > sub test { > my @array; > > if (!defined @array) { > print "not defined\n"; > } else { > print "defined\n"; > } > > push @array, "item"; > } > > test(); > test(); > > results: > not defined > defined > > HTH > > --Geoff > > > > -Original Message- > > From: Ron Rademaker [mailto:[EMAIL PROTECTED]] > > Sent: Tuesday, November 07, 2000 7:44 AM > > To: lporcano > > Cc: [EMAIL PROTECTED] > > Subject: Re: Apache::Registry() and strict > > > > > > I'm not quite looking for a workaround, I already got one, I'd like to > > know why it's going wrong. > > > > Ron > > > > On Sun, 7 Nov 1999, lporcano wrote: > > > > > It looks like you are trying to determine if an array is > > empty, in that case > > > replace > > > if (!defined(@fields)) > > > with > > > if (!scalar(@fields)). > > > > > > - Original Message - > > > From: Ron Rademaker <[EMAIL PROTECTED]> > > > To: <[EMAIL PROTECTED]> > > > Cc: <[EMAIL PROTECTED]> > > > Sent: Tuesday, November 07, 2000 5:26 AM > > > Subject: Re: Apache::Registry() and strict > > > > > > > > > > Okay, here's the part where it's going wrong: > > > > > > > > my @fields; # The variable that's causing the > > trouble, should be > > > > undefined after this declaration > > > > my $printedfields = 0; > > > > > > > > foreach my $hash_ref (@$data_ref) > > > > { > > > > if (!defined(@fields)) # Passes the second time the child gets a > > > > request, but @fields = () > > > > { > > > > @fields = @$hash_ref; > > > > } > [snip] >
RE: Apache::Registry() and strict
from the camel book: "Use of defined on aggregates (hashes and arrays) is deprecated." so, change if (!defined @fields) to unless (@fields) and not only be idiomatic, but exhibit the behavior you want :) but seriously, it's a perl thing, not a mod_perl thing: #!/usr/bin/perl sub test { my @array; if (!defined @array) { print "not defined\n"; } else { print "defined\n"; } push @array, "item"; } test(); test(); results: not defined defined HTH --Geoff > -Original Message- > From: Ron Rademaker [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, November 07, 2000 7:44 AM > To: lporcano > Cc: [EMAIL PROTECTED] > Subject: Re: Apache::Registry() and strict > > > I'm not quite looking for a workaround, I already got one, I'd like to > know why it's going wrong. > > Ron > > On Sun, 7 Nov 1999, lporcano wrote: > > > It looks like you are trying to determine if an array is > empty, in that case > > replace > > if (!defined(@fields)) > > with > > if (!scalar(@fields)). > > > > - Original Message - > > From: Ron Rademaker <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Cc: <[EMAIL PROTECTED]> > > Sent: Tuesday, November 07, 2000 5:26 AM > > Subject: Re: Apache::Registry() and strict > > > > > > > Okay, here's the part where it's going wrong: > > > > > > my @fields; # The variable that's causing the > trouble, should be > > > undefined after this declaration > > > my $printedfields = 0; > > > > > > foreach my $hash_ref (@$data_ref) > > > { > > > if (!defined(@fields)) # Passes the second time the child gets a > > > request, but @fields = () > > > { > > > @fields = @$hash_ref; > > > } [snip]
Re: Apache::Registry() and strict
> I'm not quite looking for a workaround, I already got one, I'd like to > know why it's going wrong. >From the perlfunc page: defined - Returns a Boolean value telling whether EXPR has a value other than the undefined value undef. [...] On the other hand, use of defined() upon aggregates (hashes and arrays) is not guaranteed to produce intuitive results, and should probably be avoided. Len
Re: Apache::Registry() and strict
I'm not quite looking for a workaround, I already got one, I'd like to know why it's going wrong. Ron On Sun, 7 Nov 1999, lporcano wrote: > It looks like you are trying to determine if an array is empty, in that case > replace > if (!defined(@fields)) > with > if (!scalar(@fields)). > > - Original Message - > From: Ron Rademaker <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]> > Sent: Tuesday, November 07, 2000 5:26 AM > Subject: Re: Apache::Registry() and strict > > > > Okay, here's the part where it's going wrong: > > > > my @fields; # The variable that's causing the trouble, should be > > undefined after this declaration > > my $printedfields = 0; > > > > foreach my $hash_ref (@$data_ref) > > { > > if (!defined(@fields)) # Passes the second time the child gets a > > request, but @fields = () > > { > > @fields = @$hash_ref; > > } > > else > > { > > print ""; > > if (!$printedfields) > > { > > $printedfields = 1; > > foreach my $field (@fields) > > { > > print "$$hash_ref{$field}"; > > } > > print ""; > > } > > else > > { > > foreach my $found (@fields) > > { > > print ""; > > my $tempfound = $found; > > my $unitskey = $tempfound . "units"; > > my $printed = 0; > > if (defined($$hash_ref{$unitskey})) > > { > > print "$$hash_ref{$unitskey}$$hash_ref{$found}"; > > $printed = 1; > > } > > $tempfound =~ s/min//; > > $tempfound =~ s/max//; > > $unitskey = $tempfound . "units"; > > if (defined($$hash_ref{$unitskey}) && !$printed) > > { > > print "$$hash_ref{$found} $$hash_ref{$unitskey}"; > > } > > elsif(!$printed) > > { > > print "$$hash_ref{$found}"; > > } > > print ""; > > } > > print ""; > > print " > colspan='$#fields'>$$hash_ref{productlongdescription}" if > > (($url_ref eq "") && (defined($$hash_ref{productlongdescription})) && > > ($specdb eq "")); > > print " > > href='/cgi-bin/order.cgi?productcode=$$hash_ref{productcode}&number=1'>Beste > l > > dit product"; # Second run causes a use of unititialised > > value here, will be solved if defined checks does what is should > > } > > } > > } > > > > On Tue, 7 Nov 2000 [EMAIL PROTECTED] wrote: > > > > > > > > Then it is definitely variable persistence ! > > > > > > If you really can't track down the bug, you might try posting your > code to > > > the list. > > > > > > Perhaps someone will spot something you've missed ? > > > > > > Simon. > > > > > > > > > > > > > > > > > > > > >From Ron Rademaker > <[EMAIL PROTECTED]> > > > Date 7 November 2000 > > > > > > > > > To > > > Simon Wilcox/BASE/WilliamsLea@WilliamsLea Time 10:04 > > > > > > > > > > > > Copy to[EMAIL PROTECTED] > > > > > > > > > > > > Bcc > > > > > > > > > > > > Fax to > > > > > > > > > > > > Subject Re: Apache::Registry() and strict > > > > > > > > > > > > > > > > > > I just read that part of the guide, for the third time today, but still > I > > > didn't see anything that could help, I don't get any warnings and I'm > not > > > using globals. The problem does occur when trying to use a child more > then > > > once. So when I tried running with httpd -X I got the wrong output the > > > second time. > > > > > > Ron > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > __ > > > > > > > > >This email contains proprietary information some or all of which may > be > > >legally privileged. It is for the intended recipient only. If an > addressing > > >or transmission error has misdirected this email, please notify the > author by > > >replying to this email. If you are not the intended recipient you > must not > > >use, disclose, distribute, copy, print, or reply on this email. > > > > > > > > > > >
Re: Apache::Registry() and strict
It looks like you are trying to determine if an array is empty, in that case replace if (!defined(@fields)) with if (!scalar(@fields)). - Original Message - From: Ron Rademaker <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Tuesday, November 07, 2000 5:26 AM Subject: Re: Apache::Registry() and strict > Okay, here's the part where it's going wrong: > > my @fields; # The variable that's causing the trouble, should be > undefined after this declaration > my $printedfields = 0; > > foreach my $hash_ref (@$data_ref) > { > if (!defined(@fields)) # Passes the second time the child gets a > request, but @fields = () > { > @fields = @$hash_ref; > } > else > { > print ""; > if (!$printedfields) > { > $printedfields = 1; > foreach my $field (@fields) > { > print "$$hash_ref{$field}"; > } > print ""; > } > else > { > foreach my $found (@fields) > { > print ""; > my $tempfound = $found; > my $unitskey = $tempfound . "units"; > my $printed = 0; > if (defined($$hash_ref{$unitskey})) > { > print "$$hash_ref{$unitskey}$$hash_ref{$found}"; > $printed = 1; > } > $tempfound =~ s/min//; > $tempfound =~ s/max//; > $unitskey = $tempfound . "units"; > if (defined($$hash_ref{$unitskey}) && !$printed) > { > print "$$hash_ref{$found} $$hash_ref{$unitskey}"; > } > elsif(!$printed) > { > print "$$hash_ref{$found}"; > } > print ""; > } > print ""; > print " colspan='$#fields'>$$hash_ref{productlongdescription}" if > (($url_ref eq "") && (defined($$hash_ref{productlongdescription})) && > ($specdb eq "")); > print " href='/cgi-bin/order.cgi?productcode=$$hash_ref{productcode}&number=1'>Beste l > dit product"; # Second run causes a use of unititialised > value here, will be solved if defined checks does what is should > } > } > } > > On Tue, 7 Nov 2000 [EMAIL PROTECTED] wrote: > > > > > Then it is definitely variable persistence ! > > > > If you really can't track down the bug, you might try posting your code to > > the list. > > > > Perhaps someone will spot something you've missed ? > > > > Simon. > > > > > > > > > > > > > >From Ron Rademaker <[EMAIL PROTECTED]> > > Date 7 November 2000 > > > > > > To > > Simon Wilcox/BASE/WilliamsLea@WilliamsLea Time 10:04 > > > > > > > > Copy to[EMAIL PROTECTED] > > > > > > > > Bcc > > > > > > > > Fax to > > > > > > > > Subject Re: Apache::Registry() and strict > > > > > > > > > > > > I just read that part of the guide, for the third time today, but still I > > didn't see anything that could help, I don't get any warnings and I'm not > > using globals. The problem does occur when trying to use a child more then > > once. So when I tried running with httpd -X I got the wrong output the > > second time. > > > > Ron > > > > > > > > > > > > > > > > > > > > > > > > > > __ > > > > > >This email contains proprietary information some or all of which may be > >legally privileged. It is for the intended recipient only. If an addressing > >or transmission error has misdirected this email, please notify the author by > >replying to this email. If you are not the intended recipient you must not > >use, disclose, distribute, copy, print, or reply on this email. > > > > > >
Re: Apache::Registry() and strict
Okay, here's the part where it's going wrong: my @fields; # The variable that's causing the trouble, should be undefined after this declaration my $printedfields = 0; foreach my $hash_ref (@$data_ref) { if (!defined(@fields)) # Passes the second time the child gets a request, but @fields = () { @fields = @$hash_ref; } else { print ""; if (!$printedfields) { $printedfields = 1; foreach my $field (@fields) { print "$$hash_ref{$field}"; } print ""; } else { foreach my $found (@fields) { print ""; my $tempfound = $found; my $unitskey = $tempfound . "units"; my $printed = 0; if (defined($$hash_ref{$unitskey})) { print "$$hash_ref{$unitskey}$$hash_ref{$found}"; $printed = 1; } $tempfound =~ s/min//; $tempfound =~ s/max//; $unitskey = $tempfound . "units"; if (defined($$hash_ref{$unitskey}) && !$printed) { print "$$hash_ref{$found} $$hash_ref{$unitskey}"; } elsif(!$printed) { print "$$hash_ref{$found}"; } print ""; } print ""; print "$$hash_ref{productlongdescription}" if (($url_ref eq "") && (defined($$hash_ref{productlongdescription})) && ($specdb eq "")); print "Bestel dit product"; # Second run causes a use of unititialised value here, will be solved if defined checks does what is should } } } On Tue, 7 Nov 2000 [EMAIL PROTECTED] wrote: > > Then it is definitely variable persistence ! > > If you really can't track down the bug, you might try posting your code to > the list. > > Perhaps someone will spot something you've missed ? > > Simon. > > > > > > >From Ron Rademaker <[EMAIL PROTECTED]> > Date 7 November 2000 > > > To > Simon Wilcox/BASE/WilliamsLea@WilliamsLea Time 10:04 > > > > Copy to[EMAIL PROTECTED] > > > > Bcc > > > > Fax to > > > > Subject Re: Apache::Registry() and strict > > > > > > I just read that part of the guide, for the third time today, but still I > didn't see anything that could help, I don't get any warnings and I'm not > using globals. The problem does occur when trying to use a child more then > once. So when I tried running with httpd -X I got the wrong output the > second time. > > Ron > > > > > > > > > > > > > __ > > >This email contains proprietary information some or all of which may be >legally privileged. It is for the intended recipient only. If an addressing >or transmission error has misdirected this email, please notify the author by >replying to this email. If you are not the intended recipient you must not >use, disclose, distribute, copy, print, or reply on this email. > >
Re: Apache::Registry() and strict
Then it is definitely variable persistence ! If you really can't track down the bug, you might try posting your code to the list. Perhaps someone will spot something you've missed ? Simon. From Ron Rademaker <[EMAIL PROTECTED]> Date 7 November 2000 To Simon Wilcox/BASE/WilliamsLea@WilliamsLea Time 10:04 Copy to[EMAIL PROTECTED] Bcc Fax to Subject Re: Apache::Registry() and strict I just read that part of the guide, for the third time today, but still I didn't see anything that could help, I don't get any warnings and I'm not using globals. The problem does occur when trying to use a child more then once. So when I tried running with httpd -X I got the wrong output the second time. Ron __ This email contains proprietary information some or all of which may be legally privileged. It is for the intended recipient only. If an addressing or transmission error has misdirected this email, please notify the author by replying to this email. If you are not the intended recipient you must not use, disclose, distribute, copy, print, or reply on this email.
Re: Apache::Registry() and strict
I just read that part of the guide, for the third time today, but still I didn't see anything that could help, I don't get any warnings and I'm not using globals. The problem does occur when trying to use a child more then once. So when I tried running with httpd -X I got the wrong output the second time. Ron On Tue, 7 Nov 2000 [EMAIL PROTECTED] wrote: > > Are you running with httpd -X ? > > What you describe sounds like it "stops working" when it hits a child for > the second time. > > As advised, all this is described in the guide. You might want to start > here: > > http://perl.apache.org/guide/porting.html#Exposing_Apache_Registry_secret > > HTH, > > Simon. > > > > > > > >From Ron Rademaker <[EMAIL PROTECTED]> > Date 7 November 2000 > > > To > [EMAIL PROTECTED] Time 09:42 > > > > Copy to[EMAIL PROTECTED] (bcc: Simon Wilcox/BASE/WilliamsLea) > > > > Bcc Simon Wilcox/BASE/WilliamsLea > > > > Fax to > > > > Subject Re: Apache::Registry() and strict > > > > > > Just tried, it didn't give me any useful information, I always got any > other warning without PerlWarn on, so I don't think it made any > difference. Anyway, even with PerlWarn on, the error.log still shows > exactly the same output, everything goes well for a while, but then > suddenly my defined($foo) check succeeds where it should have failed, but > the old value is gone. > > Ron > > > > > > > > > > > > __ > > >This email contains proprietary information some or all of which may be >legally privileged. It is for the intended recipient only. If an addressing >or transmission error has misdirected this email, please notify the author by >replying to this email. If you are not the intended recipient you must not >use, disclose, distribute, copy, print, or reply on this email. > >
Re: Apache::Registry() and strict
Hi there, On Tue, 7 Nov 2000, Ron Rademaker wrote: > Just tried, it didn't give me any useful information,... Try 'httpd -X'. 73, Ged.
Re: Apache::Registry() and strict
Are you running with httpd -X ? What you describe sounds like it "stops working" when it hits a child for the second time. As advised, all this is described in the guide. You might want to start here: http://perl.apache.org/guide/porting.html#Exposing_Apache_Registry_secret HTH, Simon. From Ron Rademaker <[EMAIL PROTECTED]> Date 7 November 2000 To [EMAIL PROTECTED] Time 09:42 Copy to[EMAIL PROTECTED] (bcc: Simon Wilcox/BASE/WilliamsLea) Bcc Simon Wilcox/BASE/WilliamsLea Fax to Subject Re: Apache::Registry() and strict Just tried, it didn't give me any useful information, I always got any other warning without PerlWarn on, so I don't think it made any difference. Anyway, even with PerlWarn on, the error.log still shows exactly the same output, everything goes well for a while, but then suddenly my defined($foo) check succeeds where it should have failed, but the old value is gone. Ron __ This email contains proprietary information some or all of which may be legally privileged. It is for the intended recipient only. If an addressing or transmission error has misdirected this email, please notify the author by replying to this email. If you are not the intended recipient you must not use, disclose, distribute, copy, print, or reply on this email.
Re: Apache::Registry() and strict
Just tried, it didn't give me any useful information, I always got any other warning without PerlWarn on, so I don't think it made any difference. Anyway, even with PerlWarn on, the error.log still shows exactly the same output, everything goes well for a while, but then suddenly my defined($foo) check succeeds where it should have failed, but the old value is gone. Ron On Tue, 7 Nov 2000 [EMAIL PROTECTED] wrote: > On Tue, 7 Nov 2000, Ron Rademaker wrote: > > Hi, > > > You would think so, however every doc I read (including the one you > > pointed out to me) told me that perl gives me a warning: > > > > Variable $foo will not stay shared at > > > > I do use -w so I should get that warning, but I don't. The variable stays > > defined, but it doesn't have the value of the old variable, it just passes > > the defined($foo) test but the value has changed to an empty array (from a > > full array). > > -w has no effect, read the guide again and use PerlWarn On :-) > > Bye, > remco > > /--\ > | Remco Schaar | > | e-mail: [EMAIL PROTECTED] | > \--/ > > South Park meets Linux: > - "Oh my God, they killed init!" > - "You bastards!" >
Re: Apache::Registry() and strict
On Tue, 7 Nov 2000, Ron Rademaker wrote: Hi, > You would think so, however every doc I read (including the one you > pointed out to me) told me that perl gives me a warning: > > Variable $foo will not stay shared at > > I do use -w so I should get that warning, but I don't. The variable stays > defined, but it doesn't have the value of the old variable, it just passes > the defined($foo) test but the value has changed to an empty array (from a > full array). -w has no effect, read the guide again and use PerlWarn On :-) Bye, remco /--\ | Remco Schaar | | e-mail: [EMAIL PROTECTED] | \--/ South Park meets Linux: - "Oh my God, they killed init!" - "You bastards!"
Re: Apache::Registry() and strict
You would think so, however every doc I read (including the one you pointed out to me) told me that perl gives me a warning: Variable $foo will not stay shared at I do use -w so I should get that warning, but I don't. The variable stays defined, but it doesn't have the value of the old variable, it just passes the defined($foo) test but the value has changed to an empty array (from a full array). Ron On Mon, 6 Nov 2000, ed phillips wrote: > Ron, > > This is a greivous FAQ. Please read the guide at > http://perl.apache.org/guide > > You'll find much more than this question answered. > > Ed > > > > Ron Rademaker wrote: > > > Hello, > > > > I'm just starting with mod_perl and I'm using Apache::Registry(). The > > second line after #!/usr/bin/perl -w is use strict; > > But somehow variables I use in the script are still defined if I execute > > the script again, in one of the script I said undef $foo at the > > end, but I don't think this is the way it should be done, but it did work. > > Anyone knows what could be causing this?? > > > > Ron Rademaker > > > > PS. Please CC to me because I'm not subscribed to this mailinglist >
Re: Apache::Registry() and strict
Ron, This is a greivous FAQ. Please read the guide at http://perl.apache.org/guide You'll find much more than this question answered. Ed Ron Rademaker wrote: > Hello, > > I'm just starting with mod_perl and I'm using Apache::Registry(). The > second line after #!/usr/bin/perl -w is use strict; > But somehow variables I use in the script are still defined if I execute > the script again, in one of the script I said undef $foo at the > end, but I don't think this is the way it should be done, but it did work. > Anyone knows what could be causing this?? > > Ron Rademaker > > PS. Please CC to me because I'm not subscribed to this mailinglist