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
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
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
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
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
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 >
Apache::Registry() and strict
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