use List::Util qw( sum ); use List::MoreUtils qw( zip ); my $str = "aabceezazerrfde"; my $wanted = "aez"; my @values = (7,2,26); my @wanted = split //, $wanted; my %value_of = zip @wanted, @values; my $tot = sum map { $value_of{$_} || 0 } split //, $str;