#!/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 (){ 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 (){ 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; };