mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
52 lines
1.0 KiB
Perl
52 lines
1.0 KiB
Perl
#! /usr/bin/perl -w
|
|
|
|
use strict;
|
|
use warnings;
|
|
use File::Temp "tempfile";
|
|
|
|
my ($input1, $input2, $field1, $field2, $mode, $OOption, $out_file1) = @ARGV;
|
|
|
|
die "No arguments\n" unless @ARGV == 7;
|
|
|
|
my ($fh1, $file1) = tempfile();
|
|
my ($fh2, $file2) = tempfile();
|
|
|
|
`sort -k $field1 $input1 > $file1`;
|
|
`sort -k $field2 $input2 > $file2`;
|
|
|
|
my $option = "";
|
|
my @fields = ();
|
|
my $line = "";
|
|
|
|
if ($OOption eq "Y") {
|
|
if (defined($fh1)) {
|
|
$line = <$fh1>;
|
|
} else {
|
|
die "Failed to create file $file1\n";
|
|
}
|
|
@fields = split /\t/, $line;
|
|
die "The field you selected does not exist in the input file" if (@fields < $field1);
|
|
my @optionO = ();
|
|
my $i = 0;
|
|
foreach (@fields) {
|
|
++$i;
|
|
push(@optionO, "1.$i");
|
|
}
|
|
$option = "-o " . join(",", @optionO);
|
|
} else {
|
|
$option = "";
|
|
}
|
|
|
|
$ENV{'LC_ALL'} = 'POSIX';
|
|
|
|
if ($mode eq "V") {
|
|
`join -v 1 $option -1 $field1 -2 $field2 $file1 $file2 | tr " " "\t" > $out_file1`;
|
|
} else {
|
|
`join $option -1 $field1 -2 $field2 $file1 $file2 | tr " " "\t" > $out_file1`;
|
|
}
|
|
|
|
`rm $file1 ; rm $file2`;
|
|
|
|
|
|
|