Hmm... welp, the reason I was not seeing eval doing what I expected was because I was doing this:
eval { $line };
not this:
eval $line;
And I wholeheartedly agree... doing it this way is stupid. It was just the first thing I thought of, and got grumpy when things weren't behaving as I expected. eval EXPR != eval BLOCK. Right.
Thanks for the assists...