我想在perl程序中获得一个问题的解决方案.
$parallel_on=='YES'? my $pid = $pm->start and next; :0;
Run Code Online (Sandbox Code Playgroud)
我希望成为这样的声明.但我没有得到解决.可以请任何人解决这个问题吗?
yst*_*sth 10
$parallel_on=='YES'? my $pid = $pm->start and next; :0;
Run Code Online (Sandbox Code Playgroud)
那里有很多错误.首先,有一个额外的分号; 摆脱它.
$parallel_on=='YES'? my $pid = $pm->start and next :0;
Run Code Online (Sandbox Code Playgroud)
接下来,=和and具有的优先级低于:?,所以你需要附上真实情况括号:
$parallel_on=='YES'? (my $pid = $pm->start and next) :0;
Run Code Online (Sandbox Code Playgroud)
此时,它将编译,但仍然无法正常工作.==用于数字比较,'YES'是一个不以数字开头的字符串,其数值为0,因此条件几乎总是为真.(例如,'NO'=='YES'比较0 == 0,这是真的.)使用eq代替:
$parallel_on eq 'YES'? (my $pid = $pm->start and next) :0;
Run Code Online (Sandbox Code Playgroud)
下一部分,我不知道如何帮助你,因为我不确定你的代码的其余部分是什么样的. my $pid声明一个新的词法,其范围位于封闭块的末尾,但是一旦分配给它,就会使用next退出(并可能重新输入)块,从而丢失存储在$ pid中的值.你可能想在块之前声明$ pid.
my $pid;
...
$parallel_on eq 'YES'? ( $pid = $pm->start and next) :0;
Run Code Online (Sandbox Code Playgroud)
现在0;,当条件为假时,你有一个闲逛,没有任何目的.摆脱它:
if ( $parallel_on eq 'YES' ) { $pid = $pm->start and next }
Run Code Online (Sandbox Code Playgroud)
除非您打算在条件为假时将其分配给$ pid?
$pid = $parallel_on eq 'YES' ? $pm->start : 0 and next;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |