#!perl -pl
use overload nomethod,sub{($a,$b,$c,$_)=@_;/"/?"@{$a}":bless[ref$b?@_[$c,!$c,3]:-"@_"]};s/-/- /g;s/0*(\d+)/bless([$1])/g;$_=eval
|
#!perl -pl
use overload nomethod,sub{$_[3]=~/"/?"@{$_[0]}":bless[ref$_[1]?@_[$_[2],!$_[2],3]:-"@_"]};s/-/- /g;s/0*(\d+)/bless([$1])/g;$_=eval
|
#!perl -pl
use overload'""',sub{"@{$_[0]}"},nomethod,sub{bless[defined$_[1]?@_[$_[2],!$_[2],3]:-"@_"]};s/-/- /g;s/0*(\d+)/bless([$1])/g;$_=eval
|
#!perl -pl
use overload'""',sub{$_[0][0]},neg,sub{bless[-"@_"]},nomethod,sub{bless["@_[$_[2],!$_[2],3]"]};s/-/- /g;s/0*(\d+)/bless([$1])/g;$_=eval
|
Oh my. I really really had given up - just happened to read perldoc overload one last time!
#!perl -pl
use overload'""',sub{$_[0][0]},neg,sub{bless[-"@_"]},nomethod,sub{bless["@_[$_[2],!$_[2]] ".pop]};s/-/- /g;s/0*(\d+)/bless([$1])/g;$_=eval
|
#!perl -lp
use overload'""',sub{$_[0][0]},neg,sub{bless[-"@_"]},map{my$z=$_;$_,sub{bless["@_[$_[2],!pop] $z"]}}qw!+ - * /!;s/-/- /g;s/0*(\d+)/bless([$1])/g;$_=eval
|
#!perl -lp
use overload'""',sub{$_[0][0]},neg,sub{bless[-$_[0][0]]},map{my$z=$_;$_,sub{bless["@_[$_[2],!$_[2]] $z"]}}qw!+ - * /!;s/-/- /g;s/0*(\d+)/bless([$1])/g;$_=eval
|
#!perl -lp
sub r{bless["@_[$_[2],!$_[2]] $_[3]"]};use overload'+'=>sub{r@_,'+'},'-'=>sub{r@_,'-'},'*'=>sub{r@_,'*'},'/'=>sub{r@_,'/'},'""'=>sub{$_[0][0]},neg=>sub{bless[-$_[0][0]]};s/0*(\d+)/bless([$1])/g;s/-/ -/g;$_=eval
|