perl 不同文件按列合并

2025-03-26 15:20:54
推荐回答(2个)
回答(1):

my %elm;
my @files = <*.txt>;
for my $f(@files){merge($f);}
save("final.log");

sub merge{
my $f = shift;
my $H;
open $H, $f;
<$H>;
while (<$H>) {
chomp;
my @e = split(/[ \t]/, $_);
my $k = join(',', @e[0..2]);
$elm{$k} = [] if (!exists $elm{$k});
push @{$elm{$k}}, $e[3];
}
}
sub save {
my $out = shift;
my $H;
open $H, '+>', $out;
print $H "CHROM\tpos\tref\tfreq\n";
for my $k(keys %elm) {
print $H join("\t", split(',', $k), @{$elm{$k}}) . "\n";
}
close $H;
}

回答(2):

你好,你的问题解决了吗