Re: proposed addition to perlvar

[email protected] (Abigail)
Newsgroups perl.perl5.porters
Message-ID <20100609210800.GC22278@almanda>
On Wed, Jun 09, 2010 at 02:52:29PM +0000, Matt Sergeant wrote:
> On Tue, 8 Jun 2010, Chas. Owens wrote:
>
>> How about:
>>
>> =item $#
>>
>> C<$#> used to be a variable that could be used to format printed number.
>> After a deprecation cycle, its magic was removed in 5.10 and using it
>> now triggers a severe warning: C<$# is no longer supported>.
>>
>> C<$#> is also used as sigil, which, when prepended on the name of an
>> array gives the index of the last element in that array.
>>
>>    my @a            = ("a", "b", "c");
>>    my $last_index   = $#a;     # $last_index is 2
>>    my $last_element = $a[$#a]; # $last_element is "c"
>
> Do we want to "encourage" this kind of use or prefer to encourage the 
> [-1] format?


Just because a construct is documented does not imply it's encouraged.
It's important for documentation to be complete. In a section showing
an example of '$#', the example should preferable have as few other
things as possible - I would prefer the above over any foreach construct.
These lines are about $#. Not foreach. Not ranges. And it is code that 
people will encounter - and consult the documentation for.

Let's stay clear of a -1 vs. $#a preference debate. This part of the
documentation is not the place.


Abigail
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.