http://www.perlmonks.org?node_id=1174912


in reply to Odd splice behavior between perl/OS versions

Between 5.10.0 and 5.12.0 the way $#array is handled in rvalue context changed. In lvalue context, that expression returns a magic value which, when assigned to, updates the array's length. In 5.10.0, a similar magical value was also returned in rvalue context, which delayed evaluation of the array's length until the second (left-most) split was being done. In 5.12.0 onwards, the rvalue $#array expression is evaluated immediately.

This appears to be intentional:

commit 02d85cc37a4acecafdc2f0b45640b03cd1f4ac71 Author: Eric Brine <ikegami@adaelis.com> AuthorDate: Fri Oct 23 19:05:40 2009 -0400 Avoid adding magic with rvalue $#a

Dave.