Postorder

Score: 57.08 (pass)

should have spotted that...

#!perl -l
s~.~@z=map/$&/?($`,$',$&):$_,pop||@z~egfor pop;print@z

Score: 59.09 (pass)

fiddling with tiebreaks

#!perl -l
@z=pop;$_=pop;s~.~@z=map/$&/?($`,$',$&):$_,@z~eg;print@z

Score: 59.11 (pass)

ick, ick, ick, had to swot up on previous post-mortems...

#!perl -l
@l=pop;$_=pop;s;.;@l=map/$&/?($`,$',$&):$_,@l;eg;print@l

Score: 64.09 (pass)

#!perl -l
@l=pop;for$t(split//,pop){@l=map/$t/?($`,$',$&):$_,@l}print@l

Score: 104.08 (pass)

#!perl -l
$p=pop;sub z{$_=pop||return;$p=~s/^.//;my$f=$&;my($i,$j)=split/$&/;return z($i).z($j).$f}print z(pop)

Score: 140.09 (pass)

oops, last one had a vi command stuck at the end...

#!perl -l
print z(@ARGV);sub z{my$p=pop or return;$p=~s/^.//;my$f=$&;my($j,$k)=split/$&/,pop;$a=substr$p,0,length$j,"";return z($j,$a).z($k,$p).$f}

Score: 143.09 (fail)

#!perl -l
print z(@ARGV);sub z{my$p=pop or return;$p=~s/^.//;my$f=$&;my($j,$k)=split/$&/,pop;$a=substr$p,0,length$j,"";return z($j,$a).z($k,$p).$f:w
}