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


in reply to Re^2: @array elements multiplication with another array elements.
in thread @array elements multiplication with another array elements.

Thanks Anomolous, point noted. I should also reflect that it is not truly the map operator that is using the $#arr construct to obtain the highest array index as such, rather it is being used by the .. range operator. As map expects a list of some description to work with after the modifiying operation. In this case we give the list in scalar context of a range, much like the for iterator, so perl goes ah yah, this is some funky for loop right, and cooly proceeds.

I will now look into how the $ARRAY_BASE special variable affects the $# variable. I would not have thought a difference would be made, being as the highest index of an array is always going to be the highest index? (unless $[ is set higher perhaps... hmm...).

*Footsteps echo quietly away as Coyote trundles off into the dark echoing corridors of the echosome vaults.

Replies are listed 'Best First'.
Re^4: @array elements multiplication with another array elements.
by AnomalousMonk (Archbishop) on Nov 04, 2012 at 18:24 UTC
    I will now look into how the $ARRAY_BASE special variable affects the $# variable.

    By all means investigate the-special-variable-whose-name-must-not-be-written to learn its heterodoxy, but never use this impious and odious monstrosity lest your script be shunned throughout all lands and ages, and your name be cursed by maintainers.

    >perl -wMstrict -le "$[ = 654; my @ra = 0 .. 12; print $#ra; " Use of assignment to $[ is deprecated at -e line 1. 666