Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 读取SD文件并提取关于每个片段的信息_Perl - Fatal编程技术网

Perl 读取SD文件并提取关于每个片段的信息

Perl 读取SD文件并提取关于每个片段的信息,perl,Perl,我有一个SD文件要读。我无法上传整个文件。因此,我在下图中给出了一个快照 这是一个解释分子结构的SD文件(结构数据文件)。803和AMH是两个分子。同样,在同一个分子中有几个片段。每个片段由四个美元符号($$)分隔。我是perl的新手,因为我是一名生物医学研究生。然而,我编写了一个脚本,在它旁边的行中查找$$$的出现,然后查找分子代码的出现(这里是803) { open (FILE, '<', "try_803.txt"); my $ligandcode="803

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

这是一个解释分子结构的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
        }    
    }    
} 
{

打开(文件,可以将输入记录分隔符设置为四个dolar符号、一个换行符和803

local $/ = '$$$$' . "\n803";
然后,你可以在一个循环中读取整个分子:

while (<FILE>) {
    my $molecule = $_;
}
while(){
我的$molecular=$\;
}

谢谢。它成功了。但是这个脚本在$molecular中传递了整个块。我想单独访问每一行以执行其他功能。请帮助谢谢。但是当我使用下面的代码时,第4行在块1中打印,而第5行在其他块中打印。
while(){my$molecular=$\u;my@lines=split(/\n/);print$lines[3],“\n”}
我想指定每个块都以$$$开头,下一行以8033开头。因此$$$$成为每个块的第一行,803成为第二行。请help@shpr:为什么你需要数组中的美元和数字?如果你真的需要它们(我对此表示怀疑)是的,我不需要$$$和803,而是我需要这个块**10 11 0 0 0 0 0 999 V2000-1.7992-1.7457 0.0000 c0 0 0 0 0 0 0 0 0 0 0 0-2.5137-1.3332 0.0000 c0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0**,但是在阅读这些行时,如果我使用$lines[3],它将阅读块1中的第四行和下面块中的第三行。请帮助