试图从pdb文件中取出所有ATOM

时间:2017-12-08 22:29:58

标签: regex bash shell perl pdb-files

您好我试图从pdb文件中取出所有以ATOM开头的行。出于某种原因,我遇到了麻烦。我的代码是:

open (FILE, $ARGV[0])
    or die "Could not open file\n";

my @newlines;
my $atomcount = 0;
while ( my $lines = <FILE> ) {
    if ($lines =~ m/^ATOM.*/) {
    @newlines = $lines;
    $atomcount++;
}
}

print "@newlines\n";
print "$atomcount\n";

1 个答案:

答案 0 :(得分:0)

该行

 @newlines = $lines;

$lines重新分配给数组@newlines,从而在while循环的每次迭代时覆盖它。 您宁愿追加$lines@newlines,所以

push @newlines, $lines;

会奏效。

旁注:变量名称$lines应为$line(仅为了便于阅读),因为它只是一行,而不是多行

您可以在循环后使用@newlines中的项目数量,而不是明确计算附加到$atomcount++;的项目(@newlines):

my @newlines;
while ( my $line = <FILE> ) {
    if ($line =~ m/^ATOM.*/) {
        push @newlines, $line;
    }
}

my $atomcount = @newlines; # in scalar context this is the number of items in @newlines
print "@newlines\n";
print "$atomcount\n";