in reply to Re^4: perldoc -lf anomaly (%_)
in thread perldoc -lf anomaly

%_ is a special snowflake like $_ and @_

If by special snowflake you mean a punctuation variable, then yes.

Yes, %_ is an invalid names for a lexical, but that's the case for all punctuation variables.

Yes, %_ is strict-exempt, but that's the case for all super-global variables, and all punctuation variables are super-global variables.[1]

So there's nothing special about %_ specifically, so it makes no sense to document %_ specifically any more than it does to document $x. It works just like every other variable of its class.

I could swear I saw it somewhere once upon a time

Perl has never used %_. Its existence is a side effect of how super-globals are implemented: Symbols are made super-global, not individual variables. This means that $ENV, @2, %$ and &_ all similarly exist as super-global variables.


  1. All package variables are visible everywhere, making them all globals. By super-global, I mean that an unqualified reference to this variable looks for the symbol in `main` instead of the current package, so all unqualified references access the same variable regardless of the current package.