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:
Author: Eric Brine <firstname.lastname@example.org>
AuthorDate: Fri Oct 23 19:05:40 2009 -0400
Avoid adding magic with rvalue $#a