Why is this program valid? I was trying to create a syntax error
Perl has a syntax called "indirect method notation". It allows
Foo->new($bar)
to be written as
new Foo $bar
So that means
Syntax error ! exit 0;
is the same as
error->Syntax(! exit 0);
or
error->Syntax(!exit(0));
Not only is it valid syntax, it doesn't result in a run-time error because the first thing executed is exit(0)
.
I don't know why, but this is what Perl makes of it:
perl -MO=Deparse -w yuck
BEGIN { $^W = 1; }
use warnings;
use strict 'refs';
'error'->Syntax(!exit(0));
yuck syntax OK
It seems that the parser thinks you're calling the method Syntax
on the error
-object... Strange indeed!