このコードを単純化または一般化する方法を誰かが知っているかどうか疑問に思っていました。正しい答えが得られますが、現在の状況にのみ適用されます。私のコードは次のとおりです。
sub longestRepeat{
# list of argument @_ is: (sequence, nucleotide)
my $someSequence = shift(@_); # shift off the first argument from the list
my $whatBP = shift(@_); # shift off the second argument from the list
my $match = 0;
if ($whatBP eq "AT"){
if ($someSequence =~ m/(([A][T])\2\2\2\2\2)/g) {
$match = $1
}
return $match;
}
if ($whatBP eq "TAGA"){
if ($someSequence =~ m/(([T][A][G][A])\2\2)/g) {
$match = $1
}
return $match;
}
if ($whatBP eq "C"){
if ($someSequence =~ m/(([C])\2\2)/g) {
$match = $1
}
return $match;
}
}
私の質問は、2 番目の if ステートメントで、そのパターンが繰り返される一定量に設定されていることです (指定された文字列に適用されます)。しかし、\2 (パターンの繰り返し) を検索するために while ループを実行し続ける方法はありますか? 私が言いたいのは、これができるかということです: if ($someSequence =~ m/(([A][T])\2\2\2\2\2)/g) は while ループで単純化され、一般化されます