in reply to numerology experiment

I couldn't resist posting a solution that doesn't use split, even if it uses string eval instead:

use strict; use warnings; my $str = "aabceezazerrfde"; my %vals = ( a => 7, e => 2, z => 26 ); my $total = 0; while( my ( $char, $val ) = each %vals ) { my $count = eval "qw($str) =~ tr/$char//" or die $@; my $charval = $count * $val; $total += $charval; print "Found [$char] $count times ($count * $val = $charval)\n"; } print "Total = $total\n";
Found [e] 4 times (4 * 2 = 8) Found [a] 3 times (3 * 7 = 21) Found [z] 2 times (2 * 26 = 52) Total = 81