#! 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; } if( FALSE ) { ;## Never called } } } sub usingLiterals { for( 1 .. 1e6 ) { if( 1 ) { my $sum = 12345 * 12345; } if( 0 ) { ;## Never called } } } sub usingReadonly { for( 1 .. 1e6 ) { if( $true ) { my $sum = $value * $value; } if( $false ) { ;## Never called } } } cmpthese -1, { const => sub{ usingConstant() }, literals => sub{ usingLiterals() }, Readonly => sub{ usingReadonly() }, };