Infix to RPN

Score: 131.82 (pass)

Didn't quite retire the idea, eh? :-)

#!perl -lp
sub _{bless\"@_"}use overload'""',sub{${$_[0]}},neg,sub{_"-$_[0]"},nomethod,sub{_"@_[0,1,3]"};s/-/ -/g;s/\d+/ _('$&')/g;$_=eval

Score: 142.80 (pass)

Sorry for so many posts in one day. I think it is time to retire this idea.

#!perl -l
sub n{bless\"@_"}use overload'""',sub{${$_[0]}},neg,sub{n"-$_[0]"},nomethod,sub{n"@_[0,1,3]"};$_=<>;s/(-?)[0 ]*(\d+)/ $1 n($2)/g;print eval

Score: 155.81 (fail)

doesnt pass any tests ..

#!perl -l
sub n{bless\shift}use overload'""',sub{${$_[0]}},'neg',sub{n "-$_[0]"},'nomethod',sub{n "@_[0,1,3]"};$_=;s/(-?)[0\s]*(\d+)/ $1 n($2)/g;print eval

Score: 163.82 (pass)

There is a perl bug here. bless shift workds on Windows 5.6.1 but not on redhat 5.6.0

#!perl -l
sub n{my$c=shift;bless\$c}use overload'""',sub{${$_[0]}},'neg',sub{n "-$_[0]"},'nomethod',sub{n "@_[0,1,3]"};$_=;s/(-?)[0\s]*(\d+)/ $1 n($2)/g;print eval

Score: 184.43 (fail)

This doesn't seem to produce any output besides a newline for any input.

#!perl -l
package A;
$_=;
s/(-?)[0 ]*(\d+)/ $1 A->n($2)/g;
print eval;
use overload
'""'=>sub{${$_[0]}},
'neg'=>sub{n A "-$_[0]"},
'nomethod'=>sub{n A "@_[0,1,3]"};
sub n{bless \$_[1]}

Score: 193.44 (pass)

#!perl -l
package A;
use overload
'""'=>sub{${$_[0]}},
'neg'=>sub{n A "-$_[0]"},
'nomethod'=>sub{n A "@_[0,1,3]"};
sub n{my $c=$_[1];bless \$c}
$_=;
s/(-?)[0 ]*(\d+)/ $1 A->n($2)/g;
print eval;