0

我有一个 SD 文件要读取。我无法上传整个文件。所以我在下图中给出了一个快照。

解释分子结构的 SD 文件(结构数据文件)。 803和AMH是两个分子。 此外,在同一个分子内有几个片段。 每个片段由四个美元符号 ($$$$) 分隔。 这是一个解释分子结构的 SD 文件(结构数据文件)。803和AMH是两个分子。此外,在同一个分子内有几个片段。每个片段由四个美元符号 ($$$$) 分隔。我是 perl 的新手,因为我是一名生物医学研究学生。但是,我编写了一个脚本,它找到了 $$$$ 的出现,然后在它旁边的行中找到了分子代码(这里是 803)的出现。

{
    open (FILE, '<', "try_803.txt");    
    my $ligandcode="803";    
    while (<FILE>) {
        my $nextline = <FILE>;     
        if ( $_=~/\x24\x24\x24\x24/ &&  $nextline=~/$ligandcode/){    
            # do something
        }    
    }    
} 

这段代码检查了第一次出现的 $$$$,然后是 803。但是,我希望它进一步检查下一次出现的 $$$$,然后是 803。我不知道这种模式会出现多少次。从技术上讲,我无法事先指定片段的编号。你能帮我改进这段代码并找到问题的解决方案吗?我会很感激的。

4

1 回答 1

0

您可以将输入记录分隔符设置为四个圆号、一个换行符和 803。

local $/ = '$$$$' . "\n803";

然后,您可以循环读取整个分子:

while (<FILE>) {
    my $molecule = $_;
}
于 2012-05-23T11:05:26.817 回答