use strict; use warnings; use Benchmark qw(cmpthese); my $count = -3; cmpthese($count, { 'Split' => \&Split, 'IRS_while' => \&IRS_while, 'IRS_map' => \&IRS_map, }); sub Split { local $/; my $document; open(FILE, 'removed.xml') or die "Error [$!]\n"; while () { $document .= $_ } my @lines = split('\|',$document); return @lines; } sub IRS_while { local $/ = '|'; my @lines; open(FILE, 'removed.xml') or die "Error [$!]\n"; while () { chomp; push @lines, $_; } return @lines; } sub IRS_map { local $/ = '|'; open(FILE, 'removed.xml') or die "Error [$!]\n"; my @lines = map {chomp; $_} (); return @lines; } __END__ Rate IRS_map Split IRS_while IRS_map 7682/s -- -17% -19% Split 9284/s 21% -- -3% IRS_while 9529/s 24% 3% --