#!/usr/bin/env perl
use strict;
use warnings;
my %least_ref;
open my $reference, '<', $ARGV[0] or die "Can't open reference ($ARGV[0]): $!";
while (<$reference>) {
my ($key, $val) = split;
if (not exists $least_ref{$key} or $val < $least_ref{$key}) {
$least_ref{$key} = $val;
}
}
close $reference;
open my $testfile, '<', $ARGV[1] or die "Can't open testfile ($ARGV[1]): $!";
while (<$testfile>) {
my ($key, $val) = split;
print "$key\t", $least_ref{$key} - $val, "\n";
}
close $testfile;
####
$ cat > pm_least_diff.ref
chr1 40
chr1 50
chr2 60
chr2 80
chr3 100
####
$ cat > pm_least_diff.test
chr1 30
chr2 20
chr2 50
chr3 80
####
$ pm_least_diff.pl pm_least_diff.ref pm_least_diff.test
chr1 10
chr2 40
chr2 10
chr3 20