This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #90888] each(ARRAY) on scalar context should wrapped into defined()
authorHojung Yoon <amoc.yn@gmail.com>
Wed, 25 May 2011 01:18:14 +0000 (18:18 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 25 May 2011 03:08:32 +0000 (20:08 -0700)
commit459b64da6c5743fa9093a9ef5214a82b46f2f7d0
treecd1efb6cc33c5a8f9dee02b6434b87103345c9f6
parenteee8d40ab2eee78fd8a8a007a74b8b97b9f3c053
[perl #90888] each(ARRAY) on scalar context should wrapped into defined()

"perldoc -f each" says that if each() is performed on ARRAY
in scalar context, it will return only the index in an array.
Calling each(HASH) in scalar context worked well but calling
each(ARRAY) didn't because it was not wrapped into defined OPCODE.

So, in Perl_newWHILEOP() and Perl_newLOOPOP(), they are modified
to check them and wrap with defined OP if needed.

In S_new_logop(), it's reasonable to warn if return value of
each(ARRAY) is being used for boolean value, as it's first return
value will be "0", the false.

issue: #90888
link: http://rt.perl.org/rt3/Public/Bug/Display.html?id=90888
op.c
t/op/each_array.t