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

Re: $# -variable?

by davorg (Chancellor)
on Jul 27, 2006 at 09:05 UTC ( [id://563991]=note: print w/replies, xml ) Need Help??


in reply to $# -variable?

From perldata:

The length of an array is a scalar value. You may find the length of array @days by evaluating $#days , as in csh. However, this isn't the length of the array; it's the subscript of the last element, which is a different value since there is ordinarily a 0th element. Assigning to $#days actually changes the length of the array. Shortening an array this way destroys intervening values. Lengthening an array that was previously shortened does not recover values that were in those elements.

So $#array is the last index in @array. As arrays are indexed from zero, this will obviously one less that the result you'll get by evaluating @array in a scalar context.

Perl has both ways to get information about the size of an array as both methods can be useful. In particular, $#array can be assigned to; which extends or truncates the array.

Two more things to note:

  • There is also a variable called $#. It's never used. You can read about it (and why you shouldn't use it) in perlvar
  • There is another variable called $[ which controls the value that Perl uses for the first index in an array. Changing this will also change $#array. Changing the value of this variable is a very bad idea.
--
<http://dave.org.uk>

"The first rule of Perl club is you do not talk about Perl club."
-- Chip Salzenberg

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://563991]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (6)
As of 2024-03-28 16:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found