2012-01-29 6 views
-4

Pour extraire les lignes Atom à partir du fichier PDB j'ai écrit le soufflet de code qui ne montre aucun outputfile quand je lance le programmeExtraction Coordonnées de fichier PDB

print" Enter the file name"; 

$a=<>; 

@arr=split(" ",$a); 

if($i=0; $i< scalar @arr; $i++) 

foreach $values(@arr) 
{ 

    if($values=~/^ATOM/) 
    { 
     print FH1 $a; 

     open(FH1,">>output.pdb") 
    } 
} 
+0

Vous n'ouvrez pas un fichier pour lire n'importe où dans ce code. – Mat

+0

@Mat, vous n'avez pas besoin d'ouvrir le handle de fichier ARGV magique explicitement. Le vrai problème est que son code ne compile même pas. Ce premier «si» ressemble à un «for». Il manque également d'accolades, qui ne sont pas optionnelles en Perl. – cjm

+0

@cjm: Je ne pense pas que 'foreach $ values ​​(@arr)' fasse n'importe quelle sorte de magie, je ne vois pas comment le handle de fichier ARGV pourrait être utilisé n'importe où dans ce code. Est-ce que je manque quelque chose? (Sauf pour '$ a = <>;' bien sûr.) – Mat

Répondre

2

Vous ne pouvez pas utiliser split avec des fichiers texte PDB depuis la les champs sont définis par position et non par des séparateurs. Voir Coordinate File Description (PDB Format).

Au lieu de cela, vous devez utiliser substr ($line,$start,$len) avec des valeurs différentes de $start et $len pour chaque champ (prise du Coordinate File Description), ou se fonder sur l'un des disponibles parseurs PDB, tels que Bioperl's.