27

我刚刚在我的 Ubuntu 上发现 Perl 并没有在结尾抱怨分号。检查以下代码:

#!/usr/bin/perl
use warnings;
use strict;

my @array = (1, 2, 3, 4);

foreach (@array)
{
    print $_."\n"
}

print "no, this cant be true"

请注意分号“;” 打印语句中缺少。代码仍然运行良好。

输出:

1
2
3
4
no, this cant be true

如果我在打印后加分号,它仍然有效。所以这让我很困惑。

你能帮我理解我在这里遗漏了什么,或者是否有一些我忽略的明显 Perl 意识形态?

4

3 回答 3

53

perldoc perlsyn

每个简单语句都必须以分号结尾,除非它是块中的最后一条语句,在这种情况下分号是可选的。

您的打印语句是块中的最后一条语句。

但不建议省略分号。如果稍后扩展块,很容易忘记添加它。

于 2013-05-09T09:11:23.903 回答
12

我经常将 Perl 中的分号视为分隔符而不是终止符——这使得这种行为更容易习惯。

也就是说,始终使用分号并不是一个坏主意,因为如果您在块的末尾放置更多语句,您不必记住稍后添加它,有点像在列表中使用额外的逗号所以以后不要忘记添加它(如果后面没有列表项,Perl 会忽略最后一个逗号)。

于 2013-05-09T09:14:15.433 回答
9

Perl 文档

每个简单语句都必须以分号结尾,除非它是块中的最后一条语句,在这种情况下分号是可选的。

于 2013-05-09T09:12:46.667 回答