Never underestimate the power of code reuse.
#!perl -l sub n{my($x)=@_;bless\$x,'main'}use overload(map{my$o=$_;$o,sub{n($_[2]?"$o$_[0]":"$_[0] $_[1] $o")}}qw{+ - * /}),'""',sub{${$_[0]}};$_=<>;s/-/- /g;s/\d+/n("$&")/g;print eval