我需要在两个制表符分隔的文件之间找到匹配项,如下所示:
文件 1:
ID1 1 65383896 65383896 G C PCNXL3
ID1 2 56788990 55678900 T A ACT1
ID1 1 56788990 55678900 T A PRO55
文件 2
ID2 34 65383896 65383896 G C MET5
ID2 2 56788990 55678900 T A ACT1
ID2 2 56788990 55678900 T A HLA
我想做的是检索两个文件之间的匹配行。我想匹配的是基因ID之后的一切
到目前为止,我已经编写了这段代码,但不幸的是 perl 一直给我错误:使用“在模式匹配中使用未初始化的值 (m//)”
你能帮我弄清楚我在哪里做错了吗?
先感谢您!
use strict;
open (INA, $ARGV[0]) || die "cannot to open gene file";
open (INB, $ARGV[1]) || die "cannot to open coding_annotated.var files";
my @sample1 = <INA>;
my @sample2 = <INB>;
foreach my $line (@sample1) {
my @tab = split (/\t/, $line);
my $chr = $tab[1];
my $start = $tab[2];
my $end = $tab[3];
my $ref = $tab[4];
my $alt = $tab[5];
my $name = $tab[6];
foreach my $item (@sample2){
my @fields = split (/\t/,$item);
if ( $fields[1] =~ m/$chr(.*)/
&& $fields[2] =~ m/$start(.*)/
&& $fields[4] =~ m/$ref(.*)/
&& $fields[5] =~ m/$alt(.*)/
&& $fields[6] =~ m/$name(.*)/
) {
print $line, "\n", $item;
}
}
}