my @array = ( [ qw( jane 23 teacher ) ], [ qw( james 20 tailor ) ], [ qw( jason 19 manager ) ], [ qw( jimmy 23 teacher ) ], [ qw( jenny 23 teacher ) ], [ qw( kim 19 manager ) ], [ qw( larry 19 manager ) ], [ qw( wall 23 teacher ) ], ); #### my @array; while( ) { chomp; push @array, [ split '' ]; } __DATA__ jane 23 teacher james 20 tailor ... #### use constant NAME => 0; use constant AGE => 1; use constant JOB => 2; my %hash; foreach my $aref ( @array ) { if( $aref->[NAME] eq 'kim' && $aref->[AGE] == 19 && $aref->[JOB] eq 'manager' ){ $hash{$aref->[NAME]} = $aref; } } #### foreach my $name ( sort keys %hash ) { local $, = q{, }; say $name, $hash{$name}[AGE], $hash{$name}[JOB]; }