#!/usr/bin/perl -w

use strict;



if (scalar(@ARGV) < 2) {
    print "buscontp.pl database nucleotid\n";
    exit(1); 
};


# Obro la base d dades i poso els archius en un archiu que creo en el directori
# on estem executant el programa.

system ("ls $ARGV[0] > llistapdbs.txt");

#Obro l'archiu recentment creat

if (!open(LLISTAT,"< llistapdbs.txt")) {
    print "buscontp.pl: impossible obrir llistapdbs.txt\n";
    exit(1);
};

my @v;
my $i = 0;
while (<LLISTAT>){
    
    if(m/(\w+).ent.Z$/o){
        $v[$i] = $1; 
        $i = $i + 1;
	
	
    };
};

close(LLISTAT);

# Copio un a un els archius en el fitxer on s'executa el programa i el descom-
# primeixo, guardant-lo en la carpeta pospdb.

$i = 0;
while ($i < scalar(@v) - 1){
    system ("cp -r /disc9/DB/pdb/$v[$i].ent.Z .");
    system ("gunzip $v[$i].ent.Z");
    
    
    my $flag = 0; # val 1 si esta encaixant l'expressio regular i 0 si no l'encaixa
    
# L'obro i el poso en un metaarchiu anomenat PDB
    if (!open(PDB,"< $v[$i].ent")) {
	print "buscontp.pl: impossible obrir $v[$i].ent\n";
	exit(1);
    };
    
    while (<PDB>){
	if (m/HETATM\s+(\d+)\s+\S+\s+$ARGV[1]\s+/o){
	    if($flag == 0){
		print "$v[$i]\t\t$ARGV[1]\t$1\t";
		$flag = 1;
	    };
	}else{
	    if ($flag == 1){
		print "$1\n";
		$flag = 0;
	    };
	};
    };
    close (PDB);

    
    system("rm $v[$i].ent");
    $i = $i + 1;
};

