在perl中打印时使用三元运算符

时间:2013-02-01 16:27:46

标签: string perl int ternary-operator

这是我的代码:

for($i=1;$i<=100;$i++){
   if($i%15==0) print "Divisible by 15";
   else if($i%5==0) print "Divisible by 5";
   else print ($i%3==0)? "Divisible by 3":$i;
   print "\n";
} 

这是一个非常简单的代码。我使用Java工作,虽然它在Perl中出错。错误是:

syntax error at line 2, near ") print"
Execution aborted due to compilation errors.

我是Perl的新手。我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:7)

试试这个版本:

for($i=1;$i<=100;$i++){
   if ($i%15==0) { print "Divisible by 15" }
   elsif($i%5==0) { print "Divisible by 5" }
   else { print +($i%3==0)? "Divisible by 3":$i; }
   print "\n";
}

您需要在if语句的部分周围添加大括号,并使用elsif代替else if

如果+语句中没有print,perl会将语句解析为:

print(...)  ?  "Divisible by 3"  :  $i;

即。它将使用print返回的值作为三元运算符的第一个参数。另一个解决方案是写:

    else { print( $i % 3 == 0 ? "..." : $i ) }