#! perl -slw use strict; my %hash = (a=>2, b=>1, c=>5, d=>3, e=>4); my $input = "abcdaeec"; our $N //= 2; $,= ' '; print map{ my $iplus = ord() - ord('a'); $iplus = ( $iplus + $N ) % keys %hash; $iplus = chr( ord('a') + $iplus ); $hash{ $_ } + $hash{ $iplus }; } split '', $input; __END__ C:\test>junk41 -N=2 7 4 9 5 7 5 5 9 C:\test>junk41 -N=3 5 5 7 4 5 9 9 7 C:\test>junk41 -N=4 6 3 6 8 6 7 7 6