2013-02-12 3 views
1

해시에 담긴 배열의 더 큰 가치를 잡으려면이 부분을 사용해야합니다. 펄 최대 값을 식별 할 때 배열 @slice 어레이에 의해 제거된다Perl에서 @slice 배열 요소를 어떻게 인쇄 할 수 있습니까?

if (max(map $_->[1], @$val)){ 
my @slice = (@$val[1]);    
my @ignored = @slice; 
delete(@$val[1]); 
print "$key\t @ignored\n"; 
warn Dumper \@slice; 

}

데이터 : 덤퍼를 :

$VAR1 = [ [ '3420', '3446', '13', '39', 55 ] ];

내가 탭으로 구분 그 정보를 인쇄 할 (\ t)이 목록과 같이 한 줄에 표시됩니다.

miRNA127 dvex589433 - 131  154 
miRNA154 dvex546562 + 232  259  
miRNA154 dvex573491 + 297  324  
miRNA154 dvex648254 + 147  172 
miRNA154 dvex648254 + 287  272 
miRNA32 dvex320240 -  61 83 
miRNA32 dvex623745 -  141  163 
miRNA79 dvex219016 +  ARRAY(0x100840378) 

하지만 마지막 줄에서는 항상이 결과를 얻습니다.

어떻게이 출력을? 생성 할 수

miRNA127 dvex589433 - 131  154 
miRNA154 dvex546562 + 232  259  
miRNA154 dvex573491 + 297  324  
miRNA154 dvex648254 + 147  172 
miRNA154 dvex648254 + 287  272 
miRNA32 dvex320240 -  61 83 
miRNA32 dvex623745 -  141  163 
miRNA79 dvex219016 +  3420 3446 

추가 해설 :이 경우 , 나는 $의 VAR에서 가장 높은 값을 잡으려면 - [1] 경우보고> 최소로 뺄셈 $ VAR -> [0]은 < = 55입니다. 그렇지 않으면,이 AoA (가장 높은 값)를 제거하고 @ignored 배열을 채워야합니다. 다음으로, 나는 목록처럼 @ignored 값을 출력하고 싶다. 다음, 반응 결과물의 AOA와 함께, 나는

+1

귀하의 코드는 '아무튼 예를 들어

네가 말하는대로해라. 'max (map $ _-> [1], @ $ val)'은 AoA $ val에있는 배열의 두 번째 요소의 최대 값을 결정합니다. 이 최대 값은 무시됩니다. '$ val'의 두 번째 배열은'@ slice'에 복사되고'$ val'에서'undef'로 설정됩니다. ('delete'는 배열에서 작동하지 않습니다) – Borodin

답변

2
print "$key\t $ignored[0]->[0]\t$ignored[0]->[1]"; 

당신은 배열의 배열을 가지고 ... 마지막 흐름을 반복하고 싶은, 그래서 @ignored의 각 요소는 배열입니다. $ignored[0]이라는 표식이 0 번째 요소 (배열)에 도착하고 ->[0]->[1]은 해당 배열의 0 번째 및 첫 번째 요소를 검색합니다.

use strict; 
use warnings; 
use Data::Dumper; 

my @ignored; 
$ignored[0] = [ '3420', '3446', '13', '39', 55 ]; 
my $key = 'miRNA79 dvex219016 +'; 

print Dumper \@ignored; 
print "\n"; 

print "$key\t$ignored[0]->[0]\t$ignored[0]->[1]"; 

출력 :하십시오 \t

$VAR1 = [ 
      [ 
      '3420', 
      '3446', 
      '13', 
      '39', 
      55 
      ] 
     ]; 

miRNA79 dvex219016 + 3420 3446 

동일한 출력을 생성하는 또 다른 옵션은 join에 모든 값이 :

print join "\t", $key, @{ $ignored[0] }[ 0, 1 ]; 
+0

완벽하고 단순하며 -util-solution입니다. 고마워요! –

+0

@CristianVelandia - 대단히 환영합니다! – Kenosis

관련 문제