我使用的是一篇發表在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