http://qs321.pair.com?node_id=270365


in reply to Alpha base-26 to base-10...

use strict; use warnings; use List::Util qw(sum); use constant OFFS => 1 - ord 'a'; use constant BASE => ord("z") - ord("a") + 1; sub alphabetic_to_base10 { local $_ = reverse shift; my $fac = 1; sum map +( (OFFS+ord $_)*$fac, $fac*=BASE )[0], /./g; } printf "$_: %d\n", alphabetic_to_base10($_) for qw[a z aa az ba zz aaa + zba]; __END__ a: 1 z: 26 aa: 27 az: 52 ba: 53 zz: 702 aaa: 703 zba: 17629
Update: OFFS has to be 1 - ord 'a', not - ord 'a', of course.

Makeshifts last the longest.