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