#! perl -slw use strict; use Data::Dump qw[ pp ]; my @report; while( ) { my @f = split ' ', $_; for my $field ( 0 .. $#f ) { $report[ $field ]{ $f[ $field ] }++; } } pp \@report; __DATA__ 483 OS dx-32 1 charles list4 aardvark.com ty-off lx-on C 01 483 DS dx-14 1 james list3 23.456.12.7 ty-on lx-on B 01 769 XO dx-32 5 sully nolist widgets.com ty-on lx-on V 07