【发布时间】:2015-09-20 04:09:27
【问题描述】:
我有两个文件,想从两个文件中找到匹配的字段 1 和 2,并在字段 1 和 2 匹配时从第二个文件中打印第三个字段。文件 1 看起来像:
#CHR BP
#1 9690639
#1 7338706
#1 7338707
#1 7338717
文件 2 看起来像:
#1 10036 rs11928874 CT C 315.21 VQSRTrancheINDEL99.99to100.00AC=3;AF=0.063;AN=48;BaseQRankSum=0.297;DP=1469;FS=16.265;InbreedingCoeff=-0.0941;MLEAC=3;MLEAF=0.063;MQ=14.67;MQ0=0;MQRankSum=1.339
我编写了以下 perl 脚本,它输出了太多不符合匹配条件的行:
my @loci;
open IN, "highalt_results.txt";
while (<IN>) {
my @L = split;
next if m/CHR/;
push @loci, [ $L[0], $L[1] ];
}
close IN;
my $F = shift @ARGV;
open IN, "$F";
while (<IN>) {
my @L = split;
next if m/#CHROM/;
foreach (@loci) {
if ( $L[0] = ${$_}[0] ) {
if ( $L[1] = ${$_}[1] ) {
print "${$_}[0] ${$_}[1] $L[2]\n";
next;
}
}
}
}
谁能指出脚本哪里出错了?
【问题讨论】: