-4

我有一个来自文件的输入,我需要将输入中的罗马数字转换为单词或整数。在我的文章中,有字符串、数字、罗马数字的组合,但我只需要将罗马数字更改为数字,我使用 convert::number::roman 但它需要整个文本,当然它不是罗马数字

当我使用 roman 时,它应该转换我们输入的值:

 $roman = roman(13);                        
 $arabic = arabic($roman) if isroman($roman);    

请给我提意见?

4

1 回答 1

4

如果我理解这个问题,您正在尝试转换包含在较大文本中的罗马数字。最简单的方法是进行 eval 替换,尽管相当蛮力。例如。

#!/usr/bin/env perl

use strict;
use warnings;

use Text::Roman 'roman2int';

my $text = <<'END';
Tim: Let's meet at half past VI.
Toady: Hmm, no good. How about quarter to IX?
END

$text =~ s/\b(\w+)\b/roman2int($1) || $1/ge;

print $text;

由于roman2int在转换失败时返回 undef,我们只需尝试转换每个单词,如果成功则使用它,否则保留原始单词。这当然会有问题,例如有效的罗马数字单词,例如I, IV, ID,DIM等。这当然取决于您。

在相关说明中,在字典上运行代码并查看有多少单词是有效的罗马数字可能会很有趣:-)

于 2013-04-04T04:02:36.313 回答