#!/usr/bin/perl use strict; use warnings; use Data::Dumper qw(Dumper); use List::Util 'sum'; open my $fh, '<', \<) { chomp; my ($tag1, $tag2, $tag3) = split /\t/; if ($tag2 =~/NN/) { $hash{$tag3}{$tag1}++; } } print Dumper \%hash; for my $tag (keys %hash) { printf "%s freq: %d\n", $tag, sum values %{ $hash{$tag} }; } #### $VAR1 = { 'well' => { 'well' => 1 }, 'International' => { 'International' => 1 }, 'conference' => { 'conference' => 2, 'conferences' => 1 }, 'preparation' => { 'preparation' => 2 } }; well freq: 1 International freq: 1 conference freq: 3 preparation freq: 2