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

xan*_*xan -2 string int perl 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";
} 
Run Code Online (Sandbox Code Playgroud)

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

syntax error at line 2, near ") print"
Execution aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)

我是Perl的新手.我怎样才能让它运转起来?

Eri*_*ikR 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";
}
Run Code Online (Sandbox Code Playgroud)

您需要在if语句的then部分周围添加大括号,elsif而不是使用else if.

如果没有+print声明中,perl的解析语句:

print(...)  ?  "Divisible by 3"  :  $i;
Run Code Online (Sandbox Code Playgroud)

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

    else { print( $i % 3 == 0 ? "..." : $i ) }
Run Code Online (Sandbox Code Playgroud)