2012-01-29 191 views
-4

當我運行程序從PDB中提取座標文件

print" Enter the file name"; 

$a=<>; 

@arr=split(" ",$a); 

if($i=0; $i< scalar @arr; $i++) 

foreach $values(@arr) 
{ 

    if($values=~/^ATOM/) 
    { 
     print FH1 $a; 

     open(FH1,">>output.pdb") 
    } 
} 
+0

你不打開一個文件來閱讀代碼中的任何地方。 – Mat 2012-01-29 10:46:25

+0

@Mat,你不必明確地打開神奇的ARGV文件句柄。真正的問題是他的代碼甚至沒有編譯。第一個「if」看起來應該是「for」。它也缺少大括號,這在Perl中不是可選的。 – cjm 2012-01-29 10:53:26

+0

@cjm:我不認爲'foreach $ values(@arr)'有什麼魔力,我沒有看到ARGV文件句柄如何在代碼中的任何地方使用。我錯過了什麼嗎? (當然,除了'$ a = <>;')。 – Mat 2012-01-29 10:56:03

回答

2

,因爲你不能使用PDB文本文件分割提取PDB文件我寫的代碼波紋管凌動線,沒有顯示任何OUTPUTFILE字段由位置而不是分隔符定義。見Coordinate File Description (PDB Format)

相反,你應該使用substr ($line,$start,$len)與每個字段(從Coordinate File Description採取)的$start$len不同的值,或依靠現有PDB解析器之一,如Bioperl's