On Fri, 23 Feb 2018 15:46:14 +0100
"jose cabrera" <jic...@mail.com> wrote:

> Greetings!
> 
> I am using perl v5.22.1, and I am debugging an old script.  The code
> is,
> 
>             if (defined($$glob)) {
>                 $localconfig{$var} = $$glob;
>             }
>             elsif (defined (@$glob)) {
>                 $localconfig{$var} = \@$glob;
>             }
>             elsif (defined (%$glob)) {
>                 $localconfig{$var} = \%$glob;
>             }
> 
> when I run it, the interpreter errors out with:
> 
> Can't use 'defined(@array)' (Maybe you should just omit the
> defined()?) at Bugzilla/Install/Localconfig.pm line 239, <DATA> line
> 755.
> 
> Any thoughts?  Thanks.

At a quick glance, it sounds like that script ought to be changed to
use ref() to see what kind of reference it got, e.g.:

  if (ref $glob eq 'SCALAR') {
      $localconfig{$var} = $$glob;
  } else {
      $localconfig{$var} = $glob;
  }

That approach avoids the somewhat pointless de-ref and re-ref of
hashrefs/arrayrefs that the old code did - *unless* it does that for
good reason, i.e. it will be changing it and doesn't want a reference
but a shallow copy.

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to