使用标量作为perl中的条件

bio*_*ant 5 perl scalar if-statement conditional-statements

第一个计时器...所以让我知道在提出问题时是否有任何我没有注意的事情.

问题是如何使用标量作为条件,因为下面的代码不起作用.

my @parameter=('hub');

my %condition;
$condition{'hub'}{'1'}='$degree>=5';

foreach (@parameter) {
       if ($condition{$_}{'1'}) {..}
}
Run Code Online (Sandbox Code Playgroud)

我认为这是因为条件没有被正确解释,所以我也尝试了以下,这也没有用.

if ("$condition{$parameter}{'1'}") { ..}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助.:)

mob*_*mob 11

您要么需要字符串eval,它将字符串计算为Perl代码

if (eval $condition{$_}{'1'}) { ...
Run Code Online (Sandbox Code Playgroud)

或者更安全的方法是使用代码引用

$condition{'hub'}{'1'} = sub { return $degree>=5 };

if ($condition{$_}{'1'}->()) { ...
Run Code Online (Sandbox Code Playgroud)

在第二个示例中,您将一段代码附加到变量.该$var->()语法执行的代码,并评估该代码的返回值.

  • 匿名潜艇是*正确*的方式来做到这一点.:) (3认同)