#! perl -slw use strict; use Time::HiRes qw[ time ]; sub timeit (&) { my $s=time; (shift)->(); print "<", time - $s . ">"; } our $l .= "$_\t" . (int rand 2) . "\n" for 1..1e6; # linenumber TAB 0||1 RET my $i=0; timeit { $i++ while ( $l =~ /\t1\n/g) }; print $i; $i=0; timeit { $i = () = $l =~ /\t1\n/g }; print $i; $i=0; timeit { $i = split /\t1\n/, $l }; print $i; $i=0; timeit { local $/="\t1\n";open my $D,'<',\$l; $i++ while (<$D>) }; print $i; $i = 0; timeit { my $p = 0; ++$i while $p = 1 + index $l, "\t1\n", $p; }; print $i; __END__ C:\test>1032323 Use of implicit split to @_ is deprecated at C:\test\1032323.pl line 17. <0.0966269969940186> 500737 <3.00464200973511> 500737 <0.204351902008057> 500738 <0.118543148040771> 500738 <0.0931870937347412> 500737