2014-07-17 29 views
2

这个问题可能听起来很愚蠢,但对我来说100%确定我做的是正确的事情非常重要,所以我决定在这里问这个问题。Perl:在块结束时添加分号(;)

我在其他人的代码中遇到过if语句,它们的块以分号(;)结尾。

我猜这些分号没有效果,但我想完全确定它。

那么你能告诉我吗?下面的代码片段有什么区别吗?

有了分号:

if ($var) { 
    print "hi\n"; 
}; 

没有分号:

if ($var) { 
    print "hi\n"; 
} 

谢谢!

回答

3

如果没有else块,它们是完全等效的。对于else块,不允许使用分号。

+0

所以在分组结尾的分号在Perl中从来没有任何影响? – SomethingSomething

+2

分号不是该块的一部分。它是以下语句的一部分(这是一个空的语句,只包含您的案例中的分号本身)。所以它不会影响该块。请注意'''在Perl中有很多含义,它在'do {...}中有不同的含义;'和'eval {...};'。在这些情况下,块是表达式的一部分,分号终止表达式。另一个例子:'my $ x = eval {5} + 6;'。此示例显示块和分号不相关。 – pts

+4

这取决于块的类型。分号必须在'do {...};'和'eval {...};'之后,因为这些是语句。 – friedo

2
if ($var) { print "hi\n"; }; 

if ($var) { print "hi\n" } 

print "hi\n";; 

print "hi\n"; 

你有两种说法,后者是空的。一个空的陈述什么都不做。

$ perl -e'print "hi\n";;;;;;;;;;;;;' 
hi