use constant CONSTANT => 10;; Internals::SvREADONLY( my $READONLY = 10, 1);; [Type of arg 1 to Internals::SvREADONLY must be one of [$%@] (not scalar assignment) at (eval 11) line 1, near "1)" $READONLY = 10; Internals::SvREADONLY( $READONLY, 1);; ++$READONLY;; [Modification of a read-only value attempted at (eval 13) line 1, line 6. cmpthese -1,{ a=>q[ for(1..1000){ my $string = "the constant is " . CONSTANT . "\n" } ], b=>q[ for(1..1000){ my $string = "the readonly is $READONLY\n"; } ], };; Rate b a b 3893/s -- -46% a 7236/s 86% --