$a="ABC"; $b=length($a); print "$b\n"; for($i=0;$i<$b;$i++){ $a=~s/(\d+)(.)/$2 x $1/ge; } print "$a\n"; my %value = ( A => 2.74, B => 2.64, C => 2.5, ); my %factor = ( A => 50/100, B => 55/100, C => 60/100, ); my @letters = split //, $a; my $result = 1; my $temp=0; for my $letter (@letters) { $result *= $value{ $letter }; #print "$result\n"; }; my %seen; my @uniqed = grep !$seen{$_}++, @letters; for my $letter (@uniqed) { $result *= $factor{ $letter }; #print "$result\n"; }; print $result;