#!usr/bin/perl use strict; use warnings; use Data::Dumper; my @data = qw(AAA ATG TTT GTC); my %hash; for my $entry (@data) { my @codes = split //, $entry; ++$hash{$codes[$_]}[$_] for 0 .. $#codes; } print Dumper (\%hash); foreach my $entry (values %hash) { $entry = [map {defined $_ ? $_ : 0} @$entry]; } print Dumper (\%hash);