In place of
print $log ("The threads is $tid Processing file, $file");
How to print the file names of the directory.
#! perl -slw
use strict;
use threads;
use threads::shared;
our $N ||= 100;
our $t=5;
our $from=1;
our $filenames;
sub worker {
my $tid = threads->tid;
# my( $log, $semRef, $from, $to ) = @_;
my( $log, $semRef, $from, $step, $to ) = @_;
for (my $file = $from ; $file <= $to ; $file += $step) {
lock $$semRef;
print $log ("The threads is $tid Processing file, $file");
}
}
## A shared variable used as a semaphore for the log file resource
my $logSem :shared;
## Open the log file in the main thread
open my $log, ">myLog" or die $!;
my @threads = map{
threads->create( \&worker, $log, \$logSem, $from + ($_ - 1), $t, $to
+) ;
} 1 .. $t ;
## Wait till they are done
$_->join for @threads;
## close the log
close $log;