我试图在我的程序中过滤分隔文本文件的数组。从这个文本文件中的排列是这样的:Perl:通过阵列过滤以创建新阵列
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);
}
}
$个将只是一个字母,将被输入由用户,并对应于最后一个字段$序列。用户实际输入$氨基酸并不是必需的,所以我需要复制这个数组并保持它不变,如果是这种情况(因此else语句)。当时@msfile_filtered数组是空的,但我不确定为什么,有什么想法?
编辑:只是为了澄清,每个领域之间只有一个空间,我复制并粘贴这从notpad ++,所以额外的间距被添加。文件本身只在字段之间有一个空格。
在此先感谢!
是很可能的,OP做不提供用户输入示例 –
我使用原始问题中的示例,位于顶部。 (以YCL049C开头的五行) –
感谢您的帮助!当没有输入$氨基的输入时,循环跳过查找和数组保持不变,但是当我输入$氨基的值时,@ msfile_filtered不包含只有指定字母的序列。实际上它什么都没有。我将发挥作用并回报 – user2941526