我正在尝试在我的程序中过滤一个分隔文本文件的数组。此文本文件中的数组如下所示:
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 数组为空,但我不确定为什么,有什么想法吗?
编辑:为了澄清,每个字段之间只有一个空格,我从 notpad++ 复制并粘贴了这个,所以添加了额外的空格。文件本身在字段之间只有一个空格。
提前致谢!