Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re^2: Where is $# fully documented?

by LanX (Saint)
on Sep 23, 2014 at 14:44 UTC ( [id://1101651]=note: print w/replies, xml ) Need Help??


in reply to Re: Where is $# fully documented?
in thread Where is $# fully documented?

> It does not mention $# at all

well in these 5.20 docs this is mentioned  $aref->$#*; # same as $#{ $aref }

> but points 1 and 2 there address exactly what you are asking about.

Anywhere you'd put an identifier (or chain of identifiers) as part of a variable or subroutine name

So I suppose $# counts as a special function since its not a variable, but addressing an attribute of a variable?

Thanks anyway! :)

Cheers Rolf

(addicted to the Perl Programming Language and ☆☆☆☆ :)

Replies are listed 'Best First'.
Re^3: Where is $# fully documented?
by ysth (Canon) on Sep 23, 2014 at 17:25 UTC

    Special function? No.

    The a in @a is the identifier part of the variable name; the documentation addresses anywhere you'd put that a, which includes $#a.

    Update: hmm, it does say "as part of a variable...name", implying it would only work if $#a is a considered a variable. I shy away from that because, even though it is an assignable lvalue, it really is just an attribute of an array variable. So the doc could use a minor tweak.

    In any case, $#$arrayref / $#{$arrayref} ought to be added to the examples there.

    --
    A math joke: r = | |csc(θ)|+|sec(θ)| |-| |csc(θ)|-|sec(θ)| |
      > I shy away from that because, even though it is an assignable lvalue, it really is just an attribute of an array variable. So the doc could use a minor tweak.

      That's my point, I couldn't mentally map this behavior to normal dereferencing mechanics cause it rather feels like a magic feature.

      To make it more obvious, theoretically we could have a special syntax for keys and values of a hash ( like e.g. %<hash ).

      This would be a similar beast (/me struggling for a name ;)

      > In any case, $#$arrayref / $#{$arrayref}ought to be added to the examples there

      Definitely!

      Cheers Rolf

      (addicted to the Perl Programming Language and ☆☆☆☆ :)

        we could have a special syntax for keys and values of a hash ( like e.g. %<hash ).

        It couldn't be a variable since it's a list of values. It wouldn't make sense to give it the syntax of a variable since you couldn't do anything to it that you could do to a variable.

        Unless you mean keys in scalar context. That's an lvalue function that returns a magical variable like substr. As such, that could be made into a variable (e.g. keys(%h) = 123; could be made into %#h = 123;).

Re^3: Where is $# fully documented?
by ikegami (Patriarch) on Sep 23, 2014 at 14:48 UTC
    $#a is no more a function and as much a variable as $a and @a.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2024-04-18 21:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found