私はファイルから読んでいます。1 つの列の値に基づいて、独自のクラス/タグをそれに割り当てたいと考えています。
これらの正規表現:
'LTR*','MLT*','MST*' ... はクラス HERV に属します。
'Charlie*','Looper*' ... クラス DNA に属する
現在、正規表現を持つ配列とそれぞれのクラスを持つ配列の 2 つの配列があります。
my @array = map { qr{$_} } ('Alu*', 'HERV*', 'Charlie*' ...
my @classes = ('Alu', 'HERV', 'DNA', 'LINE' ...
私の行が Charlie* と一致する場合、それはクラス DNA に属していることがわかります。
要約すると、ファイルのすべての行に対して、配列全体をループして一致を探しています。
for my $i (0 .. $#array) {
if ($type =~ m/$array[$i]/) {
my $class=$classes[$i];
}
}
もちろん、これはあまり巧妙ではありません。ハッシュの使用を示唆する「この正規表現のグループはこのクラスに属します」と言う方がはるかに良いでしょう。
ただし、ハッシュマップのすべてのキー、次に特定のキーのすべての値よりもすべての行をループするのは非常に不便であり、一致した場合はそのキーを結果のクラス/タグとして使用します。これは良い解決策ですか?
どうもありがとうございました。