2017-12-08 13 views
0

こんにちは私は、ATOMで始まるすべての行をpdbファイルから取り出しようとしています。なんらかの理由で、私は問題を抱えています。アレイ@newlinespdbファイルからすべての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

@newlines = $lines; 

再割り当て$linesしたがってwhileループの各反復でそれを上書き:私のコードです。 あなたは、むしろそう

push @newlines, $lines; 

が動作する、@newlinesアペンドすべての$linesにしたいです。

追記:それはちょうど1行、ない複数行ですので、変数名$lines$line(単に読みやすくするために)する必要があります。

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"; 
:代わりに、明示的にあなただけのループの後 @newlines内の項目数を使用することができます( $atomcount++;付き) @newlinesに追加項目をカウントする

関連する問題