regex: 37.940104 seconds substr: 14.430599 seconds #### #!/usr/bin/perl use strict; use warnings; use Time::HiRes qw/ gettimeofday tv_interval /; #load up the numbers open my $fh, "< nums.out" or die; my @numbers = <$fh>; my $first_three; my ($start, $stop, $run_time); my $count = 100; $start = [gettimeofday()]; for (0..$count) { foreach my $phone (@numbers) { ($first_three) = $phone =~ /(\d{3})/; } } $stop = [gettimeofday()]; $run_time = tv_interval($start,$stop); print "regex: $run_time seconds\n"; $start = [gettimeofday()]; for (0..$count) { foreach my $phone (@numbers) { $first_three = substr $phone, 0, 3; } } $stop = [gettimeofday()]; $run_time = tv_interval($start,$stop); print "substr: $run_time seconds\n";