in reply to (Golf) Decorating the Christmas Tree

Okay well here's a (weak?) attempt to use as a benchmark (214 chars):
($h,$f)=(23,.9); @F=qw(o @ + %);$\="\n"; sub Z{my $s;$s.=rand()<$f?$F[rand $#F+1]:'='for(1..$_[0]);$s;} print ' 'x&z(0,2),'*';sub z {(($h*2)+1-$_[0])/$_[1];} for$i(1..$h-1){$i*=2;$i++;print ' 'x&z($i,2),Z($i);} print ' 'x&z(2,2),'| |';
I replaced '*' with '%' as an ornament since IMHO it ought only be on top. And you can add new ornaments to @F at Will. Oh, and I added a trunk. Without embellishments it is 186 chars.

UPDATE: Changed char counts to reflect runrig's assumption

--
perl -p -e "s/(?:\w);([st])/'\$1/mg"