Я новичок в Perl и хочу объединить и добавить новый столбец с содержимым различных текстовых файлов.
Мой 1-й файл имеет два столбца.
chr1 14548
chr1 15240272
chr1 68723
chr1 80040
chr1 29627919
chr1 63585628
chr1 177110
chr1 199016
chr1 63600119
2-й файлесть один столбец
chr1 15240272
chr1 29627919
chr1 63585628
chr1 63600119
chr1 63608794
chr1 63620650
chr1 65986172
chr1 81620996
chr1 89015871
chr1 96384184
3-й файл имеет один столбец
chr1 3014448
chr1 3068620
chr1 3079928
chr1 3082514
chr1 3176980
chr1 3198886
chr1 3212349
chr1 3249189
chr1 3265742
chr1 3273096
Я хочу, чтобы мои выходные данные имели 4 столбца.
chr1 14548 chr1 3014448
chr1 15240272 0 0
chr1 68723 chr1 3068620
chr1 80040 chr1 3079928
chr1 29627919 0 0
chr1 82626 chr1 3082514
chr1 63585628 0 0
chr1 177110 chr1 3176980
chr1 199016 chr1 3198886
chr1 212740 chr1 3212349
если column1 во 2-м файле, добавить значение 0 в столбцы 2 и 3 выходного файла.иначе объединить столбец из файла1 и 3 построчно.(chr1 14548 = chr1 3014448; chr1 68723 = chr1 3068620
, все они в зависимости от порядка последовательности, если я сортирую столбец, невозможно определить chr1 14548 = what
)
мой код Perl
#!/usr/bin/perl
use strict;
use warnings;
open my $input1, '<', "file1.txt"
or die $!;
open my $input2, '<', "file2.txt"
or die $!;
open my $input3, '<', "file3.txt"
or die $!;
open my $outfile, '>', "output.txt"
or die $!;
while ( my $l1 = <$input1> ) {
my $l2 = <$input2>;
my $l3 = <$input3>;
chomp $l1;
chomp $l2;
chomp $l3;
my @columns1 = split( /\t/, $l1 );
my @columns2 = split( /\t/, $l2 );
my @columns3 = split( /\t/, $l3 );
if ( $columns2[1] == $columns1[1] ) {
print $outfile join( "\t", $columns1[0], $columns1[1], '0', '0' ), "\n";
}
else {
print $outfile
join( "\t", $columns1[0], $columns1[1], $columns3[0], $columns3[1] ),
"\n";
}
}
close;
Мой сценарий Perl не может работатьотлично.Не могу добавить значение 0 в выводе.
Если кто-то может помочь, это будет очень цениться.