Infix to RPN

Score: 127.65 (pass)

#!perl -pl
s/\s//g;$x=xx;$a=s#[*/]#x$_#?'(([+-] )?x)':x,s/[-+(]$/x$_ x/,$x=~s/$a/$_ $1/for/(?

Score: 129.64 (pass)

#!perl -pl
s/\s//g;$x=xx;s/$/ /,/[*\/]/&&$x=~s/[+-] x|x/x$_$&/||s/\(|([+-] )/x$1x/+$x=~s/x/$_/for/(?

Score: 133.23 (pass)

It seems it fails this test: Input: 1 + 2 * 3 Output: 1 2 + 3 *

#!perl -p
s/\s//g;$x="

";s/$/ /,/[*\/]/&&$x=~s/[+-] 
|
/
$_$&/||s/\(|([+-] )/
$1
/+$x=~s/
/$_/for/(?

Score: 140.23 (pass)

#!perl -p
s/\s//g;s/(?

Score: 147.21 (pass)

Finally getting forward

#!perl -p
s/\s//g;s/(?

Score: 161.26 (pass)

#!perl -p
s/\s//g;s/(?

Score: 161.43 (pass)

Final optimizations, better logic needed.

#!perl -pl
%w='*b/c+d-e'=~/./g;s/\s//g;s/(?

Score: 193.48 (pass)

Easy optimizations, score <200

#!perl -pl
%w=split//,'*b/c+d-e';sub r{my($a)=@_;
for$b('*/','+-'){1 while$a=~s#(\w+)([$b])(\w+)#a$1a$3a$w{$2}#}$a}
s/\s//g;s/(?

Score: 278.34 (pass)

First working solution, so I don't bother with optimization yet.

#!perl -p
%w=('+'=>'a','-'=>'s','*'=>'M','/'=>'D');
sub rpn($) {
my($a)=@_;
1 while$a=~s#(\w+)([*/])(\w+)#_$1_$3_$w{$2}#;
1 while$a=~s/(\w+)([+-])(\w+)/_$1_$3_$w{$2}/;
$a
}
s/\s//g;s/(?