我使用的是一篇发表在Science文章中的工具,但它给我带来了很多麻烦,因为我对Perl并不熟悉。
的代码包含:
return $equa if /\@BOUNDARY/;
我相信,代码应该返回$equa
如果它包含文本@BOUNDARY
,但它没有做到这一点。提供的代码是否有错误?
我想将其更改为的:
if ($equa =~ /\@BOUNDARY/) {
return $equa;
}
这是否执行同样的功能?
作为参考,在原有代码的整体功能是:
sub correctBoundaryReac {
my $equa = shift;
print $equa;
return $equa if /\@BOUNDARY/;
my($left, $arrow, $right) = ('', '', '');
if($equa =~ /^(<--|<==>|-->) (.+)/){
$arrow = $1;
$right = $2;
$left = $right;
$left =~ s/\@\S+/\@BOUNDARY/g;
}
elsif($equa =~ /(.+) (<--|<==>|-->)$/){
$left = $1;
$arrow = $2;
$right = $left;
$right =~ s/\@\S+/\@BOUNDARY/g;
}
else{
die "Don't know how to fix bounadry reaction: $equa\n";
}
return "$left $arrow $right";
}
'返回$ EQUA如果/ \ @边界/;'是一样的'返回$ EQUA如果$ _ =〜/ \ @ BOUNDARY /;'有两个变量:$ equa和$ _ – toolic
'/ $ pattern /'将匹配应用于当前保存在默认变量'$ _'中的任何内容。所以你提供的是不同的。例如,for(@arr)'在'$ _'中有数组元素,因为它迭代它们。这只是一个例子,'$ _'在Perl中使用很多。查看前面的代码,看看'$ _'中可以包含什么。 – zdim
当您更改代码时,代码是否适用? – toolic