#!/usr/bin/perl print roman(1968) . "\n"; sub roman { my $number = shift; $number =~ /(\d*?)(\d{1,3})$/; my $buf = 'M' x $1; my @digits = reverse split('',$2); my @numerals = ( ['','I','II','III','IV','V','VI','VII','VIII','IX'], ['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'], ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'], ); for ($i = scalar(@digits) - 1; $i >= 0; $i--) { $buf .= $numerals[$i]->[$digits[$i]]; } return $buf; }