2017-12-08 22 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; 

가 작동, @newlinesAPPEND 모든 $lines로합니다.

(!) 참고 : 그냥 한 줄하지 여러 줄 때문에 변수 이름 $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에 추가 된 항목을 계산의