On Sun, Mar 22, 2009 at 11:04:15PM -0500, Dave Rolsky wrote:
> On Sun, 22 Mar 2009, Mark Copper wrote:
>
> > Begging your forebearance with this silly question. It seems to be
> > related to hanging Apache processes.
> >
> > I am occasionally getting the warning:
> > Use of uninitialized value in concatenation (.) or string at
> > /usr/share/perl5/HTML/Mason/Request.pm line 1191.
> >
> > On my Debian install, line 1191 is the concatenation line in the print
> > sub:
> >
> > sub print
> > {
> > my $self = shift;
> >
> > # $self->{top_stack} is always defined _except_ in the case of a
> > # call to print inside a start-/end-request plugin.
> > my $bufref =
> > ( defined $self->{top_stack}
> > ? $self->{top_stack}->[STACK_BUFFER]
> > : \$self->{request_buffer}
> > );
> >
> > # use 'if defined' for maximum efficiency; grep creates a list.
> > for ( @_ ) {
> > $$bufref .= $_ if defined; # this is line 1191
> > }
> >
> > $self->flush_buffer if $self->{autoflush};
> > }
> >
> > My question: what can possibly be in @_ that satisfies the conditional
> > "if defined" and still sets off the "unitialized value" warning?
>
> If $$bufref itself is not defined, that could do it.
>
> I'm not sure how that would happen in just rare cases. I'd think if it
> happened it would happen often. I'd also think it would happen for
> everyone else.
>
>
> -dave
This had me a bit flummoxed. On one hand, $$bufref is frequently not
defined, but the "uninitialized value" warning is quite rare. And on the
other, I didn't know the LHS of a concatenation could trigger the
warning:
$ perl -we'my $a; my $b=\$a; my $c="Help!";$$b .= $c; print "$a\n"'
Help!
$
and certainly not the RHS:
$ perl -we'my $a="Help!"; my $b; $a .= $b if defined $b; print "$a\n"'
Help!
$
I just never thought of checking if both were not defined:
$ perl -we'my $a; my $b; $a .= $b if defined $b; print "$a\n"'
Use of uninitialized value in concatenation (.) or string at -e line 1.
$
Oh my...
Mark
------------------------------------------------------------------------------
_______________________________________________
Mason-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mason-users