use strict; use Carp; use Scalar::Util qw(readonly); sub ro { print "readonly($_[0])=".readonly($_[0])."\n"; $_[0] = 'xxx'; } eval { ro('lonely') } or print $@; eval { ro(named => 4); } or print $@; eval { ro(-named => 7); } or print $@; for (1..5) { # to test whether changing $_[0] affects the literal eval { ro(-loop => 7); } or print $@; }