__DATA__ ABCD EFGH #### $VAR1 = { '0' => [ 'AB', EF ], '1' => [ 'BC', 'FG' ], '2' => [ 'CD', 'GH', ] }; #### #!/usr/bin/perl -w use strict; use Data::Dumper; my $enum_size =0; my %hash; my $sub_length = 2; my $lmer; while( ) { chomp; my @array; $enum_size = length ($_) - $sub_length +1; for (my $j =0 ;$j <$enum_size ;$j++) { $lmer = substr ($_, $j, $sub_length); push @array, $lmer; $hash{$j}=[@array]; } } print Dumper \%hash; #Then do sth with the %hash