$_ = ; chomp; my @column = split /\t/; #### my @data; while() { chomp; my %row; @row{@column} = split /\t/; push @data, \%row; } #### $row{'sex'} eq 'F' and $row{'body mass index'} > 40 and $row{blood pressure'} > 135 #### push @data, \%row if $row{'sex'} eq 'F' and $row{'body mass index'} > 40 and $row{blood pressure'} > 135; #### @filtered = grep { $_->{'sex'} eq 'F' and $_->{'body mass index'} > 40 and $_->{blood pressure'} > 135 } @data;