hi,
I got this program from one of forums:
http://www.perlguru.com/gforum.cgi?post=32920
its something like this:
-------------------------------------------------------------------------
open(IN, "/path/outModified.pl") or die "$!";
while (my $line = <IN>) {
chomp($line);
my @array = (split (/\s+/, $line))[6, 7, 8];
# print "@array\n";
push @points, [ @array ];
}
close(IN);
print '@points : ', Dumper \@points;
open my $out_file, '>', "/path/dist_modified.pl" or die "cannot open: $!\n";
for my $i1 ( 0 .. $#points -1 ){
my ( $x1, $y1, $z1 ) = @{ $points[$i1] };
for my $i2 ( 1 .. $#points){
my ( $x2, $y2, $z2 ) = @{ $points[$i2] };
my $dist = sqrt(($x2 - $x1)**2 + ($y2 - $y1)**2 + ($z2 - $z1)**2);
print $out_file "153L.pdb: the distance between CA $i1 and CA $i2 = $dist\n";
}
}
close $out_file or die "cannot close file: $!\n";
========================================
Thanks to Shawnhcorey and KevinR.
my doubt is, if i have to compare the $dist with another file in the directory which has the data:
col1 col2
1 2.69
2 2.97032
3 3.25064
4 3.53096
5 3.81128
6 4.0916
7 4.37192
can I match the value of $dist with the column 2(col2) with its nearest higher value and retrieve the column1(col1) corresponding to it? I dont know how to write this in perl. Can you help...
To make it clear, if the value of $dist = 2.84, then the program should search for second row in the file [2 2.97032] and print only 2. that is the first column.it this possible. I think i have to use regular expressions?? or pattern matching??