您好我试图从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";
答案 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";