perl if声明

时间:2010-11-09 09:49:01

标签: perl

我看到了

if(cond) {} elsif(cond2) {} else {}
statement if(cond)
unless(cond) {}

但是有

statement if(cond)
statement2 elsif(cond)
statement3 else

if(cond) {} 
elsun(cond){} //un meaning else unless

3 个答案:

答案 0 :(得分:8)

不,请参阅perldoc perlsyn

答案 1 :(得分:3)

不,只有第一个。

尾随if可能更准确地显示为:

statement if cond

也就是说,不需要围绕这个条件的括号(因为它们不需要消除歧义)。

答案 2 :(得分:0)

相当多:

print "foo\n" if ($foo eq $bar);

的快捷方式
if ($foo eq $bar) {
    print "foo\n";
}

并且,我很少使用前面的内容,因为在第二个示例中,if语句比第一个示例中更明显。我使用后缀if的唯一一次是这样的:

next if ($line =~ /^\s*$/);

这通常很短,无法捕捉。

您可能想尝试:

use Switch;
switch ($val) {
    case 1          { print "number 1" }
    case "a"        { print "string a" }
    case [1..10,42] { print "number in list" }
    case (\@array)  { print "number in list" }
    case /\w+/      { print "pattern" }
    case qr/\w+/    { print "pattern" }
    case (\%hash)   { print "entry in hash" }
    case (\&sub)    { print "arg to subroutine" }
    else            { print "previous case not true" }
}

这是我认为你真正想要的。顺便说一下,我遇到了Switch的问题,但它不适用于旧的版本的Perl(pre Perl 5.8)。