RE: Apache::Registry() and strict

2000-11-07 Thread Ron Rademaker

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

2000-11-07 Thread Ron Rademaker

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

2000-11-07 Thread Ron Rademaker

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

2000-11-07 Thread Ron Rademaker

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

2000-11-07 Thread Ron Rademaker

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

2000-11-07 Thread Ron Rademaker

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

2000-11-06 Thread Ron Rademaker

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