У меня есть 9 столбцов текстовых файлов.Я открываю и считываю его в массив
#! /util/bin/perl
use strict;
use warnings;
open (I,"Map.txt") || die "$!\n ";
chomp (my $header =<I>);
while (<I>){
chomp(my $in=$_);
my (@array) = split('\t',$in);
$array[2] =~s/X/39/;
Мне нужно только извлечь 3 столбца и распечатать в порядке на 2 столбца.
push my @entries, {
CHR => $array[2],
SNP => $array[1],
GEN => '0',
POS => $array[3],};
my @sorted = sort {
$a->{CHR} <=> $b->{CHR} ||
$a->{POS} <=> $b->{POS} } @entries;
foreach my $row (@sorted) {
print $row->{CHR}, "\t" , $row->{SNP}, "\t" , $row->{GEN},"\t",$row->{POS}, "\n";}
Я не уверен, почему моя функция сортировки можетне работа.Это потому, что что-то не так с push step?
Ввод:
1 BICF2G630100019 1 31558578 0.8987 [A/G] TOP BOT 1
2 BICF2G630100032 3 31570089 0.8963 [A/G] TOP BOT 1
3 BICF2G630100034 2 31571436 0.9015 [A/G] TOP TOP 1
4 BICF2G630100043 4 31596554 0.8337 [A/G] TOP TOP 1
5 BICF2G630100054 1 31614639 0.9002 [T/C] BOT BOT 1
6 BICF2G630100063 2 31625208 0.8962 [A/G] TOP BOT 1
7 BICF2G630100075 3 31648688 0.8502 [A/C] TOP BOT 1
Ввод:
1 BICF2G630100019 0 31558578
3 BICF2G630100032 0 31570089
2 BICF2G630100034 0 31571436
4 BICF2G630100043 0 31596554
1 BICF2G630100054 0 31614639
2 BICF2G630100063 0 31625208
3 BICF2G630100075 0 31648688
Требуется вывод:
1 31558578 0 BICF2G630100019
1 31614639 0 BICF2G630100054
2 31571436 0 BICF2G630100034
2 31625208 0 BICF2G630100063
3 31570089 0 BICF2G630100032
3 31648688 0 BICF2G630100075
4 31596554 0 BICF2G630100043