in reply to Readonly oddity

FYI. Perl 5.18 with Readonly 2.0 behaves the same as you have - just uninitialised value error.

Using Perl 5.14 with Readonly 1.3:

Type of arg 1 to Readonly::Readonly must be one of [$@%] (not scalar assignment) near "'bar';" Type of arg 1 to Readonly::Readonly must be one of [$@%] (not list assignment) near ");"
I compared the source of Readonly 1.3 with 2.0 and couldn't see any obvious difference. Will need to try v1.3 and v2.0 with the same version of Perl.