小编典典

为什么这个程序有效?我试图创建一个语法错误

all

我在 Windows 7 上运行 ActiveState 的 32
ActivePerl 5.14.2。我想弄乱一个 Git
预提交挂钩来检测正在签入的程序是否存在语法错误。(不知何故,我只是设法做了这么糟糕的提交。)所以作为一个测试程序,我随机记下这个:

use strict;
use warnings;

Syntax error!

exit 0;

但是,它编译并执行时没有警告,并且错误级别在退出时为零。这个有效的语法如何?


阅读 113

收藏
2022-03-11

共1个答案

小编典典

Perl 有一种称为“间接方法表示法”的语法。它允许

Foo->new($bar)

写成

new Foo $bar

所以这意味着

Syntax error ! exit 0;

是相同的

error->Syntax(! exit 0);

要么

error->Syntax(!exit(0));

它不仅是有效的语法,而且不会导致运行时错误,因为首先执行的是exit(0).

2022-03-11