use strict; use warnings; my %matrix = (NI => [2, 1 ,1 ,3 ,4] ); my @NI_index; my $min; while( my ($i, $v) = each @{$matrix{NI}} ) { if( not defined $min or $v < $min ) { $min = $v; # found new minimum @NI_index = (); # empty list } push @NI_index, $i if $v == $min; } print "@NI_index\n";