Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Why doesn't "my ($x) = @);" generate a syntax error?

by tobyink (Abbot)
on Jun 13, 2013 at 06:50 UTC ( #1038686=note: print w/ replies, xml ) Need Help??


in reply to Why doesn't "my ($x) = @);" generate a syntax error?

For any punctuation character x, if there is a magic variable called $x, then there must also be magic variables called @x and %x. That's an artefact of how current versions of the Perl parser work. So because the $) exists and does something useful, the @) variable must also exist (even if it does nothing useful!)

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name


Comment on Re: Why doesn't "my ($x) = @);" generate a syntax error?
Select or Download Code
Re^2: Why doesn't "my ($x) = @);" generate a syntax error?
by zork42 (Monk) on Jun 13, 2013 at 06:57 UTC
    I'd have never realised that.
    Thanks!
Re^2: Why doesn't "my ($x) = @);" generate a syntax error?
by Grimy (Pilgrim) on Jun 13, 2013 at 17:57 UTC
    Correction: for any punctuation character x except '[' and '{', there exist global variables $x, @x and %x. Those variables are not necessarily magic, and their existence doesn't depend on the fact that $x does something useful. For example, none of $}, @} and %} are magic, yet they are all global variables.

      $[, @[ and %[ work (or at least they do in 5.18.0). If ${, @{ and %{ were to work, that would break dereferencing.

      package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (6)
As of 2015-07-07 03:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (86 votes), past polls