http://www.perlmonks.org?node_id=163827

   1:               my $str = uc shift @_;
   2: 
   3: 
   4: 	      if($str =~ s/XLVIII$/IL/) {
   5: 	      } elsif($str =~ s/VIII$/IX/) {
   6: 	      } elsif($str =~ s/III$/IV/) {
   7: 	      } elsif($str =~ s/DCCCXCIX$/CM/) {
   8: 	      } elsif($str =~ s/CCCXCIX$/CD/) {
   9: 		  
  10: 	      } elsif($str =~ s/LXXXIX$/XC/) {
  11: 	      } elsif($str =~ s/XXXIX$/XL/) {
  12: 		  
  13: 		  
  14: 	      } elsif($str =~ s/(I{1,2})$/$1I/) {
  15: 		  
  16: 	      } elsif($str =~ s/CDXCIX$/D/) {
  17: 	      } elsif($str =~ s/CMXCIX$/M/) {
  18: 	      } elsif($str =~ s/XCIX$/C/) {
  19: 		  
  20: 	      } elsif($str =~ s/I([VXLCDM])$/$1/) {
  21: 	      } elsif($str =~ s/([VXLCDM])$/$1I/) {
  22: 	      }
  23: 	      
  24: 	      return $str;