#! perl -slw use strict; use Benchmark qw[ cmpthese ]; use constant { TRUE => 1, FALSE => 0, VALUE => 12345, }; use Readonly; Readonly::Scalar my $true => 1; Readonly::Scalar my $false => 0; Readonly::Scalar my $value => 12345; sub usingConstant { for( 1 .. 1e6 ) { if( TRUE ) { my $sum = VALUE * VALUE; } elsif( FALSE ) { ;## Never called } } } sub usingReadonly { for( 1 .. 1e6 ) { if( $true ) { my $sum = $value * $value; } elsif( $false ) { ;## Never called } } } cmpthese -1, { const => sub{ usingConstant() }, Readonly => sub{ usingReadonly() }, }; __END__ c:\test>ROvCONST.pl s/iter Readonly const Readonly 5.66 -- -98% const 0.141 3931% --