#!/usr/bin/perl -w -C use Text::RewriteRules; my %fixnum=( 0=> "zero", 1=> "um", 2=> "dois", 3=> "três", 4=> "quatro", 5=> "cinco", 6=> "seis", 7=> "sete", 8=> "oito", 9=> "nove", 10=> "dez", 11=> "onze", 12=> "doze", 13=> "treze", 14=> "catorze", 15=> "quinze", 16=> "dezasseis", 17=> "dezassete", 18=> "dezoito", 19=> "dezanove", 20=> "vinte", 30=> "trinta", 40=> "quarenta", 50=> "cinquenta", 60=> "sessenta", 70=> "setenta", 80=> "oitenta", 90=> "noventa", 100=> "cem", 200=> "duzentos", 300=> "trezentos", 400=> "quatrocentos", 500=> "quinhentos", 600=> "seiscentos", 700=> "setecentos", 800=> "oitocentos", 900=> "novecentos", 1000=> "mil", 1000000=> "um milhão", ); while(<>){ print n2w($_),"\n"; } RULES n2w (\d+)[Ee](-?\d+)==>$1 vezes 10 levantado a $2 -(\d+)==>menos $1 (\d+)\s*\%==>$1 por cento __decimaiscomp(\d+)\.=e=>join(" ",split(//,$1)) (\d+)\.(\d{1,3})\b==>$1 ponto $2 (\d+)\.(\d+)==>$1 ponto __decimaiscomp$2. \b(\d+)\b==>$fixnum{$1}!!defined $fixnum{$1} (\d+)(000000)\b==>$1 milhões (\d+)(000)(\d{3})==>$1 milhão e $3!! $1 == 1 (\d+)(\d{3})(000)==>$1 milhão e $2 mil!! $1 == 1 (\d+)(\d{6})==>$1 milhão, $2!! $1 == 1 (\d+)(000)(\d{3})==>$1 milhões e $3 (\d+)(\d{3})(000)==>$1 milhões e $2 mil (\d+)(\d{6})==>$1 milhões, $2 (\d+)(000)\b==>$1 mil (\d+)0(\d{2})==>mil e $2!! $1 == 1 (\d+)(\d00)==>mil e $2!! $1 == 1 (\d+)(\d{3})==>mil $2!! $1 == 1 (\d+)0(\d{2})==>$1 mil e $2 (\d+)(\d00)==>$1 mil e $2 (\d+)(\d{3})==>$1 mil, $2 1(\d\d)==>cento e $1 0(\d\d)==>$1 (\d)(\d\d)==>${1}00 e $2 0(\d)==>$1 (\d)(\d)==>${1}0 e $2 0$==>zero 0==> ENDRULES