in reply to How to make array references from scalar value

If you print $a in first version, it says a, b, {perl => monk }. If you eval it, it is interpreted as a perl program.

In a perl program with strict in effect, a, b and monk are forbidden. The eval doesn't care how you constructed the string, it just works with what it sees.