#! perl -slw use strict; use Benchmark qw[ cmpthese ]; our $fred = 'fred'; our $bill = undef; cmpthese -1, { definedor => q[ for( 1 .. 1e3 ) { $fred //= 'fred'; $bill //= 'bill';; } ], unlessdefined => q[ for( 1 .. 1e3 ) { $fred = 'fred' unless defined $fred; $bill = 'bill' unless defined $bill; } ], ternary => q[ for( 1 .. 1e3 ) { $fred = defined $fred ? $fred : 'fred'; $bill = defined $bill ? $bill : 'bill'; } ], }; __END__ C:\test>junk71 Rate ternary unlessdefined definedor ternary 3989/s -- -45% -53% unlessdefined 7283/s 83% -- -14% definedor 8455/s 112% 16% --