use strict; use warnings; use threads; use Time::HiRes 'time'; my $nr_children = 1; my @threads; my $start = time; foreach my $i (1 .. $nr_children) { $threads[$i] = threads->create(\&Work, $i); } foreach my $i (1 .. $nr_children) { $threads[$i]->join(); } my $stop = time - $start; printf "\nclock: %.1f sec\n", $stop; my @run = times; printf "user: %.1f sec\n", $run[0]; exit; ##### sub Work { my ($i) = @_; foreach ( 1 .. (20e5/$nr_children) ) { my $acct_nrs = "abc\txyz\tdef\tabc\tghi\tghi"; my @temp = split(m/\t/, $acct_nrs, -1); @temp = ( sort keys %{{ map { $_ => 1 } @temp }} ); my $ans = join(', ', @temp); } print " $i"; return; }