해시에 담긴 배열의 더 큰 가치를 잡으려면이 부분을 사용해야합니다. 펄 최대 값을 식별 할 때 배열 @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와 함께, 나는
귀하의 코드는 '아무튼 예를 들어
네가 말하는대로해라. 'max (map $ _-> [1], @ $ val)'은 AoA $ val에있는 배열의 두 번째 요소의 최대 값을 결정합니다. 이 최대 값은 무시됩니다. '$ val'의 두 번째 배열은'@ slice'에 복사되고'$ val'에서'undef'로 설정됩니다. ('delete'는 배열에서 작동하지 않습니다) – Borodin