我刚刚在我的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"
请注意分号“;” print语句中缺少。代码运行良好。
输出:
1
2
3
4
no, this cant be true
如果我在打印后加分号,它仍然有效。所以这让我感到困惑。
你能帮助我理解我在这里缺少什么,还是有一些我忽略的明显的Perl意识形态?
答案 0 :(得分:50)
每个简单语句必须以分号结束,除非它是块中的最后一个语句,在这种情况下分号是可选的。
您的print语句是块中的最后一个语句。
不建议省略分号。如果稍后扩展块,就很容易忘记添加它。
答案 1 :(得分:12)
我经常认为Perl中的分号是分隔符而不是终结符 - 这使得这种行为更容易习惯。
也就是说,总是使用分号并不是一个坏主意,因为如果在块的末尾添加更多语句,就不必记得稍后添加它,有点像使用额外的逗号一个列表,以便您不要忘记稍后添加(如果后面没有列表项,Perl会忽略最后一个逗号)。
答案 2 :(得分:9)
每个简单的声明必须以分号结束,除非它 是一个块中的最后一个语句,在这种情况下分号是 可选的。