#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11152065 use warnings; { my %r2d = qw(m 1000 cm 900 d 500 cd 400 c 100 xc 90 l 50 xl 40 x 10 ix 9 v 5 iv 4 i 1); use List::Util qw( sum ); sub roman_to_dec2 { sum @r2d{ lc(shift) =~ /c?[md]|x?[cl]|i?[xv]|i/g } } } my @testdata = ( "XLII", "LXIX", "mi" ); for my $r (@testdata) { print "$r: ", roman_to_dec2($r), "\n"; }