我在 Windows 7 上运行 ActiveState 的 32 位ActivePerl 5.14.2。我想弄乱一个 Git 预提交挂钩来检测正在签入的程序是否存在语法错误。(不知何故,我只是设法做了这么糟糕的提交。)所以作为一个测试程序,我随机记下这个:
use strict; use warnings; Syntax error! exit 0;
但是,它编译并执行时没有警告,并且错误级别在退出时为零。这个有效的语法如何?
Perl 有一种称为“间接方法表示法”的语法。它允许
Foo->new($bar)
写成
new Foo $bar
所以这意味着
Syntax error ! exit 0;
是相同的
error->Syntax(! exit 0);
要么
error->Syntax(!exit(0));
它不仅是有效的语法,而且不会导致运行时错误,因为首先执行的是exit(0).
exit(0)