#!/usr/bin/env perl use 5.010; use strict; use warnings; my %result; while () { map { $result{$_->[0]}[0] += defined $_->[1] && $_->[1] eq q{1_x} ? 1 : 0; $result{$_->[0]}[1] += defined $_->[2] ? 1 : 0; } ([split]); } say qq{$_ }, join q{,} => @{$result{$_}} for sort keys %result; __DATA__ A 1_x 9_z A 1_x A 1_x g_z B 2_c B 1_x 1_z C 1_x 1_z C v_x 8_z D v_x s_x E 1_x F