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->()语法执行的代码,并评估该代码的返回值.