While Perl lacks the means to turn a once dynamic variable into a read-only (does anyone know of one?)
For SVs, Scalar::Readonly. It's basically identical to Readonly::XS (whose interface is private and undocumented). It would be nice if it was part of Scalar::Util which currently has a function to check the read-only flag (readonly), but none to set it.
I don't see anything on CPAN to make AVs or HVs read-only. It could be that Perl doesn't support read-only AVs and HVs. I'll have to check that when I get home. (Readonly fakes it by tieing magic unto variables.)