Postorder

Score: 54.12 (fail)

gives FED for DEF EDF, instead of the correct EFD

#!perl
$_=pop;$ARGV[0]=~/[$_]/,$/=$&.$/,s/$&//while$_;print$/

Score: 57.19 (pass)

#!perl
$_="@ARGV";s/[$&]//,$/=$&.$/,s/$&/
/while/\w+
*$/;print$/

Score: 60.15 (pass)

#!perl
$_=pop;$ARGV[0]=~/[$&]/,$/=$&.$/,s/$&/
/while/.+
*$/;print$/

Score: 66.11 (pass)

#!perl -l
$i=pop;$_=pop;$i=~/[$&]/,$y=$&.$y,s/$&/
/while/\w+
*$/s;print$y

Score: 75.12 (pass)

slightly better ...

#!perl -l
$i=pop;$_=pop;$i=~/[$&]/,$y=$&.$y,s/(.*)$&(\w*)/$2 $1/while/\w+/;print$y

Score: 84.09 (pass)

a bit better .. not enough though :(

#!perl -l
$_=pop;while(@ARGV){$i=pop||next;/[$i]/;$y=$&.$y;$i=~/$&/;push@ARGV,$`,$'}print$y

Score: 108.17 (pass)

#!perl -l
$_="@ARGV";1while s|(.*)(.)(.*) \2(.*)|@_=$3?split/([$3]+)/,$4:$4;$y=$2.$y;"
$3 $_[1]
$1 $_[0]"|e;print$y

Score: 115.19 (pass)

At least get my name on the leaderboard!! Some optimizations coming up ...

#!perl -l
$_="@ARGV";while(s/(.*?)(.)(.*) \2(.*)//){@_=$3?split/([$3]+)/,$4:$4;$_="
$3 $_[1]
$1 $_[0]".$_;$y=$2.$y}print$y