プログラムで区切りテキスト ファイルの配列をフィルター処理しようとしています。このテキスト ファイルの配列は次のようになります。
YCL049C 1 511.2465 0 0 MFSK
YCL049C 2 4422.3098 0 0 YLVTASSLFVALT
YCL049C 3 1131.5600 0 0 DFYQVSFVK
YCL049C 4 1911.0213 0 0 SIAPAIVNSSVIFHDVSR
YCL049C 5 774.4059 0 0 GVAMGNVK
..
.
プログラムのこのセクションのコードは次のとおりです。
my @msfile_filtered;
my $msline;
foreach $msline (@msfile) {
my ($name, $pnum, $m2c, $charge, $missed, $sequence) = split (" ", $msline);
if (defined $amino) {
if ($amino =~ /$sequence/i) {
push (@msfile_filtered, $msline);
}
}
else {
push (@msfile_filtered, $msline);
}
}
$amino は、ユーザーが入力する単なる文字であり、最後のフィールド $sequence に対応します。ユーザーが実際に $amino を入力することは必須ではないため、この配列を複製し、その場合はそのままにしておく必要があります (したがって、else ステートメント)。現時点で @msfile_filtered 配列は空ですが、理由がわかりません。何かアイデアはありますか?
編集:明確にするために、各フィールド間にスペースは1つしかありません。これをnotpad ++からコピーして貼り付けたので、余分なスペースが追加されました。ファイル自体には、フィールド間に 1 つのスペースしかありません。
前もって感謝します!