This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Do not use 'exists' on arrays; use 'defined' instead
authorJames E Keenan <jkeenan@cpan.org>
Thu, 10 Oct 2019 22:49:20 +0000 (18:49 -0400)
committerJames E Keenan <jkeenan@cpan.org>
Sun, 13 Oct 2019 12:00:40 +0000 (08:00 -0400)
commite4b195720bb9ebb04424319463f3dba4c2d7c2ae
treef891dea86f69524f87f4bd83600d1b34ea5ee61a
parentcba88c42578001df1a5d328c06ecd0eb0fb4be96
Do not use 'exists' on arrays; use 'defined' instead

pod/perlfunc.pod advises us:

       WARNING: Calling "exists" on array values is strongly
       discouraged. The notion of deleting or checking the existence of
       Perl array elements is not conceptually coherent, and can lead
       to surprising behavior.

While trying to extend the test coverage of Dumpvalue.pm, two instances
of 'exists ARRAYREF' were noted.  In the second of these two instances,
using 'exists ARRAYREF' resulted in the 'if' condition of an if/else
block always returning true, thereby making the corresponding 'else'
condition unreachable -- a situation which was confirmed by coverage
analysis.

We should only use best practices in modules maintained by Perl 5
Porters; this patch implements that.  When we do so, a different (but
actually better) error message appears in the second instance; so tests
are updated as well.

For: RT 134492
dist/Dumpvalue/lib/Dumpvalue.pm
dist/Dumpvalue/t/rt-134441-dumpvalue.t