Skip to content

perlvar: Add link to remaining legal $# use #23252

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 4, 2025

Conversation

khwilliamson
Copy link
Contributor

Fixes #21682

  • This set of changes does not require a perldelta entry.

@@ -2626,7 +2626,8 @@ using it now triggers a compilation error: C<$# is no longer supported>.

This is not the sigil you use in front of an array name to get the
last index, like C<$#array>. That's still how you get the last index
of an array in Perl. The two have nothing to do with each other.
of an array in Perl. (See L<perldata/Scalar values>.)
The two have nothing to do with each other.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The paragraph about $#array in perldata... :

  • is a page or more into the Scalar values section
  • doesn't mention that there used to be a perlvar with a similar name
  • doesn't have a heading, it can't be linked to
  • is difficult to identify as being the part of the doc the link from perlvar wants me to read about

Since I generally think it makes more sense for docs to tell you what something is, not what it isn't, it might be a good idea to move the whole conversation to a =head2 confusion between $# and $#array† section in perldata

The perlvar section should just be "$# is could easily be confused with the $#array sigil - please see L<perldata/confusion between $# and $#array>"‡ followed by the current explanation of $# used to be.

The perlvar entry should just be a tomb stone for anthropology and pub trivia purposes.

__
†. Not exactly that, but like that.
‡. reading this section means either you're working on code that's more than 15 years old, or you're confusing the perlvar with the sigil

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A picture is worth 1000 words, so

screen shot of perldoc.perl.org with a crudely drawn mspaint arrow pointing at a very not-standing-out $# paragraph

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the confusion will be limited as there has never been much usage of the variable $#, and those users will find the perlvar section quite readily, so I don't think it's worth reorganizing perldata on its behalf. On the other hand, a more explicit section or subsection on the $#foo variable form may be useful (but is a matter for another issue/PR).

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My main point is that the link does not go to the place it should - it links to a full 7 paragraphs before the intended documentation...

@khwilliamson khwilliamson force-pushed the perlvar_dollar_pound branch from c005539 to 554ced0 Compare May 4, 2025 19:54
@khwilliamson
Copy link
Contributor Author

That was the closest place to link in perldata. And I agree that it is very much less than ideal. The other place this variable is described is perlintro, and it didn't seem to me like I should be linking to a tutorial as opposed to a reference document. But, the perlintro link is much better, so I have changed to point to that

@guest20
Copy link

guest20 commented May 4, 2025

That's way better!

@khwilliamson khwilliamson merged commit 281856e into Perl:blead May 4, 2025
33 checks passed
@khwilliamson khwilliamson deleted the perlvar_dollar_pound branch May 4, 2025 21:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[doc] Steer users trying to find $# documentation
4 participants