文件处理程序编写

文件处理程序编写

请教大家一个问题
我有这样一个文件:
......
ATOM       5  CB    ALA     13     
ATOM     15  N      ARG     15     
ATOM     31  CG1  VAL     16     
ATOM     32  CG2  VAL     16     
ATOM     33  N      ALA     17     
ATOM     34  CA    ALA     17     
ATOM     50  CG1  ILE      19     
ATOM     51  CG2  ILE      19     
ATOM     52  CD1  ILE      19     
ATOM     53  N      GLY      20     
ATOM     54  CA    GLY      20     
......
我想用perl编一个程序,当文件的第五列数字不连续的时候程序会用TER把这两行分开,从而把它变成这种形式:
......
ATOM       5  CB   ALA    13  
TER   
ATOM     15  N     ARG    15     
ATOM     31  CG1 VAL    16     
ATOM     32  CG2 VAL    16     
ATOM     33  N     ALA    17     
ATOM     34  CA   ALA    17
TER     
ATOM     50  CG1 ILE    19     
ATOM     51  CG2 ILE    19     
ATOM     52  CD1 ILE    19     
ATOM     53  N     GLY    20     
ATOM     54  CA   GLY    20     
......

我现在不知道怎样读取文件中的某一列到一个数组中。请问这个怎么编写,谢谢大家,
先学学 Perl 怎么用然后再用它,谢谢!
请问怎样用perl读取文件中的某一列到一个数组中?


[Copy to clipboard] [ - ]
CODE:
my @data;
while (<DATA>) {
    push @data, (split)[4]; #第五列
}

放在数组中干什么用
上下比大小,如果后者比前者>1,则在两行之间插入“TER”。不知道就这个程序的编写您有什么好的建议没有,请指教。

my $d;
while (<INPUT>) {
  if(/ATOM\s+\d+\s+\w+\s+(\d+)/) {if (($1 == $d) || ($1 == $d+1)) {print $_} else {print "TER \n $_"}; $d = $1}
}
只看连续不连续,不需要用数组。一遍变量记住上一行中相应列的值就行了。就像7楼那样。