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.