use strict; use warnings; use Data::Dumper; my (%letters, $l); while () { chomp; @_ = split //; $l++; $letters{$_[$_]}[$_]++ for (0..$#_); } for (keys %letters) { no warnings; $_ /= $l for @{$letters{$_}}; } print Dumper(\%letters); __DATA__ AAA ATG TTT GTC