2017-12-31 94 views
0

두 개의리스트가 일치하는 배열을 가지고 있는데,이 경우에는 다른 열이있는 행의 목록입니다 (이 경우에는 3 개의 값 "숫자 ") :배열을 해시로 변환하여 원하는 열을 추출합니다.

나는 시도했다 :

my %row; 
@row{@match_all} = split "\t"; 

foreach (@match_all){ 
     my %row; 
     @row{@sample_names} = split "\t"; 
     my @filter= join "\t", @row{@wanted}; 
      push (@wanted_columns, @filter); # 



$VAR1 = { 
'#Genera' => 'namex', 
'sample1' => '0.0024', 
'sample2' => '0.0013', 
'sample3' => '0.0' 
}; 
+2

첫 번째 코드 블록이 유효한 코드가 아닙니다. '@ match_all '에 무엇이 포함되어 있는지 보여주십시오. – ikegami

답변

-1
use strict; 
use warnings qw(all); 
use feature qw(say); 

sub get_row { 
    my ($fh) = @_; 
    my $line = <$fh>; 
    return undef if !defined($line); 

    chomp($line); 
    return [ split(/\t/, $line, -1) ]; 
} 

sub get_row_hr { 
    my ($fh, $headers) = @_; 
    my $line = <$fh>; 
    return undef if !defined($line); 

    chomp($line); 
    my %row; 
    @row{@$headers} = split(/\t/, $line, -1); 
    return \%row; 
} 

{ 
    my @wanted_cols = ('#Genera', 'sample1', 'sample3'); 

    my $fh = \*DATA; 

    my $headers = get_row($fh) 
     or die("Premature EOF\n"); 

    say join "\t", @wanted_cols; 
    while (my $row = get_row_hr($fh, $headers)) { 
     say join "\t", @$row{@wanted_cols}; 
    } 
} 

__DATA__ 
#Genera sample1 sample2 sample3 
Gordonia 0.3 0.1 0.4 
Mycobacterium 0.0032 0.23 0.0 
Ornithinimicrobium 0.06 0.0 0.0 
Pseudomonas 0.3 0.28 0.52 
Halomonas 0.0006 0.1 0.1 
Acinetobacter 0.9 0.02 0.5 
Bacillus 0.4 0.5 0.1 
Klebsiella 0.22 0.4 0.3 
Lactobacillus 0.4 0.0 0.0 
+1

코드 블록과 함께 설명을 게시하십시오. 원시 코드 덤프는 일반적으로 미래의 시청자에게 도움이되지 않습니다. –

+0

@Silvio Mayolo, 나는 코드를 썼다. 나 자신을 반복하지 않고 내가 무엇을 추가 할 수 있는지 모른다. 여기에는 마법의 열쇠가 없습니다. 일련의 간단한 진술. 당신이 정교화가 필요하다고 생각되는 구체적인 것이 있다면 무엇을 구체적으로 기술하십시오. 그때까지, 당신은 논평을하는 것이 당신이 내 대답을 고소하는 것처럼 쓸모없는 것입니다. – ikegami

+1

@SilvioMayolo "_Raw 코드 덤프는 일반적으로 도움이되지 않습니다."- 두 가지로 동의하지 않습니다. (1) 수정하고 잘 작성한 코드는 일부 작업을 수행하고자하는 모든 사용자에게 유용합니다. 사실, 그것은 도움이되는 가장 중요한 것입니다. 설명은 훌륭하고 멋쟁이지만 좋은 코드는 왕이다. (2) 이것은 "_raw 코드 덤프"_가 아니라 잘 쓰여지고 명확한 프로그램입니다. 모든 언어의 기본 기능에 의존한다는 점에 유의하십시오. 또한 질문의 모호성에 특히 적합합니다. – zdim