0

読み取るSDファイルがあります。ファイル全体をアップロードできませんでした。下の画像でスナップショットを作成しました。

分子の構造を説明するSDファイル(構造データファイル)。 803とAMHは2つの分子です。 また、同じ分子内にいくつかのフラグメントがあります。 各フラグメントは4つのドル記号($$$$)で区切られます。 分子の構造を説明するSDファイル(構造データファイル)です。803とAMHは2つの分子です。また、同じ分子内にいくつかのフラグメントがあります。各フラグメントは4つのドル記号($$$$)で区切られます。私は生物医学研究の学生なので、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の4つのドル記号に設定できます。

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

次に、分子全体をループで読み取ることができます。

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