use strict; my ($key, $value, %massive, $element, $x, $y); open(CONSERVE, ""); while() { my @params; chomp($_); @params = split /\t/, $_; $massive{$params[0]}->[int($params[1] / 1000000)] = \@params; } close(CONSERVE); open(PARAM, ""); while () { my @params; chomp($_); ($key, $value, undef, @params)= split /\t/, $_; push(@{$massive{$key}->[int($value / 1000000)]}, @params); } close (PARAM); open(TSC, ""); while () { chomp($_); ($key, $value, undef, $element)= split /\t/, $_; push(@{$massive{$key}->[int($value / 1000000)]}, $element); } close(TSC); open(NIH, ""); while () { chomp($_); ($key, $value, undef, $element)= split /\t/, $_; push(@{$massive{$key}->[int($value / 1000000)]}, $element); } close(NIH); open(FILEOUT, ""); foreach $x(values(%massive)) { foreach $y(@{$x}) { print FILEOUT join("\t", @{$y}) . "\n"; } } close(FILEOUT);