Okay, I got it. The first version was simply executing the $sub and then passing the results of that into eval -- or the first item returned. That is why it was appearing to work for me in some cases (not shown in the original example), but producing odd errors at other times.
--DrWhy
"If God had meant for us to think for ourselves he would have given us brains. Oh, wait..."