I don't understand it, but it certainly works
#!perl -lp $q=$2,s/((.*?)$1[a-z]*|(.*;))/$+$q/g while'z0 bi; mi; tho;;,1000tee+10 h00y0te10lv+10tw2el11th3fo4si6f5s7o1n9e8 +'=~/(.+?)([^a-z ;]+|;)/g;$_=join',',eval;s/,1/,/g |
Don't put your program on the #!-line! It costs you one stroke, even if I would accept this.
#!perl -lp $q="$2+$3",s/((.*?)$1\w*|(.*000))/$+$q/g while'hu*100tee10ty*10lv10z0one1tw2thi3thr3fo4fi5si6se7ei8ni9te10el11bi,1000mi,1000tho,1000'=~/(\D+?)(\W?)(\d+)/g;$_=join',',eval;s/,1/,/g |