DB<49> sub english_num { my ($pre,$num) = @_; my $eng = join "-", map {(qw/zero one two three four five six seven \ eight nine/)[$_] } split //,$num; return "$pre \\$eng"} DB<50> $txt =" some text No. 345 other text No. 123 end text" DB<51> $txt =~ s/(No.) (\d{3})/english_num($1,$2)/ge DB<52> say $txt some text No. \three-four-five other text No. \one-two-three end text #### DB<94> $_ =" some text No. 345 other text No. 123 end text" DB<95> p some text No. 345 other text No. 123 end text DB<96> s/(No.) (\d)(\d)(\d)/$1 \\$nums[$2]-$nums[$3]-$nums[$4]/g DB<97> p some text No. \three-four-five other text No. \one-two-three end text