我有一个简单的数据文件。文件中的每一行都有四个元素。有些行没有空白条目。其他行有一个第一个条目,其余三个是空白的,或者更确切地说是“填充”了一个空格。它是一个制表符分隔的文件。
输入文件示例:
.
.
.
30 13387412 34.80391242 sSN_FIRST
30 13387412 34.80391242 sSN5_40
30.1
30.2
30.3
30.4
31 14740248 65.60590089 s32138223_44
31 14740248 65.60590089 s321382_LAST
.
.
.
重申一下,如果这很重要,我的文件中的“空白”实际上包含一个空格。
我的总体目标是在整个文件中“填写”第二列和第三列(忽略第四列)。为了做到这一点,我需要我的脚本来识别空白的连续行集,加上紧接在前面的行和紧接在连续空白行之后的行。在上面的示例中,这将是第 2 - 7 行。一旦我能做到这一点,我就可以使用已填充的侧翼行中的信息来帮助“填充”中间行中缺失的条目。
我一直在试验这个until
功能,但我没有成功地将它与一个读取数据线的循环耦合。例如,我可以阅读这些行并找到空白行:
open( my $FILE, "<$mapfile" );
my @file = <$FILE>;
close $FILE;
for ( my $i = 1 ; $i < scalar @file ; $i++ )
{
my @entries = split( '\t', $file[ $i ] );
if ( $entries[ 1 ] =~ m/ / )
{
print $file[ $i ]."\n";
}
}
但我正在尝试使用该until
功能,以便读取行并搜索我正在寻找的连续行集(“空白”行加上两个侧面的“完整”行)。例如:
until ( $file[ a line ] =~ m/ / && $file[ another line ] =~ m/ / )
{
my linear interpolation here;
}
谁能给我一个提示,告诉我如何结合一种方法来读取数组并比较行以在文件中找到我需要的集合?