Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re^2: @array elements multiplication with another array elements.

by AnomalousMonk (Chancellor)
on Nov 03, 2012 at 16:20 UTC ( #1002115=note: print w/replies, xml ) Need Help??

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

$#arr returns a zero indexed length of items list $#arr = 3

I think it is fundamentally misleading to refer to what  $#array returns as a "length". Rather, I would say it is the highest index of the array, and depends on what the $ARRAY_BASE special variable (aka $[ – see perlvar) has been set to (but don't do that!).

Replies are listed 'Best First'.
Re^3: @array elements multiplication with another array elements.
by Don Coyote (Pilgrim) on Nov 04, 2012 at 12:31 UTC

    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.

      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

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002115]
[stevieb]: cheers beech. twas totally my mistake, and I got bit. When things work for so long without issue, one becomes complacent (ie. replace we/one with I ;) I've been copy/pasting that around for a few years without a hiccup, so when...
[stevieb]: choroba pointed that out, I was just, you know, *sigh*. In effect, I was lucky and fortunate
[stevieb]: Kind of like my regex-fu went out the window, but only while looking at that specific file ;)

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2017-07-25 23:33 GMT
Find Nodes?
    Voting Booth?
    I came, I saw, I ...

    Results (383 votes). Check out past polls.