perl -MData::Dump -lnE "$ar[0]++; $ar[pos]{$1}++ while /(.)/g; END{ dd @ar }" freq.txt ( 4, # el 0 is the lines count { A => 3, B => 1 }, # el 1 contains occurences found at position 1 { A => 4 }, # el 2 .. so on { A => 1, B => 2, C => 1 }, { B => 4 }, { B => 1, C => 2, D => 1 }, )