use strict; use warnings; use Benchmark qw(cmpthese); ($_) = ; chomp; my @data = split /:/; cmpthese(100_000, { 'for-ind-eq' => sub { my @copy = @data; for (0..$#copy) { $copy[$_] = undef if $copy[$_] eq ''; } }, 'for-ind-match' => sub { my @copy = @data; for (0..$#copy) { $copy[$_] = undef if $copy[$_] =~ /^$/; } }, 'foreach-eq' => sub{ my @copy = @data; foreach (@copy) { $_ = undef if $_ eq ''; } }, 'foreach-match' => sub { my @copy = @data; foreach (@copy) { $_ = undef if /^$/; } }, 'map-eq' => sub { my @copy = @data; map { $_ = $_ eq '' ? undef : $_ } @copy; }, 'map-match' => sub { my @copy = @data; map { $_ = /^$/ ? undef : $_ } @copy; }, }); __DATA__ 4479:5509:7721:1743:7821::9119::9532::7095::5028:6179:2693:2133::4158:7256:7960:::8094:1458:5739:7570:::5059:4926:4933:7378:3066:7916:6062:::7671:399::::1010::3938:2278:8571:::2286::4740::4133::::2712::::2507::1579::4503:3889:1892:7667::::5676::::::8371:2258:372::2795:4126:2156:6580:5798:::8138::4545:7843:2231:4414:5792::6187::3488