in reply to Creating a hash within a fork
Below, am showing a way using MCE::Loop and calling MCE->gather.
#!/usr/bin/perl use warnings; use strict; use POSIX qw(strftime); use Time::Piece; use Cwd qw( abs_path ); use File::Basename; use File::Basename qw( dirname ); use LWP::Simple; use MCE::Loop chunk_size => 1, max_workers => 5; use Date::Calc qw (Delta_Days); use Data::Dumper; my $domains = dirname(abs_path($0)).'/domains.txt'; my $flag = 0; my $date = strftime "%Y-%m-%d", localtime; my %month = ( 'jan'=>'01','feb'=>'02','mar'=>'03','apr'=>'04','may'=>' +05','jun'=>'06','jul'=>'07','aug'=>'08','sep'=>'09','oct'=>'10','nov' +=>'11','dec'=>'12' ); my %domainList = mce_loop_f { # my ($mce, $chunk_ref, $chunk_id) = @_; # $_ is the same as $chunk_ref->[0] for chunk_size => 1 my $domainName = $_; chomp $domainName; print $domainName."\n"; my $expDate = `jwhois -n -h whois.crsnic.net $domainName | grep Ex +piration | awk '{print \$3}'`; print $expDate; my $diff = &dateDiff($expDate); if ($diff < 28 and $diff > 14) { $flag = 1; } elsif ($diff <= 14) { $flag = 2; } MCE->gather($domainName, $diff); } $domains; print Dumper(\%domainList); ...
That enables parallelism and MCE->gather(...) to pass data back to the hash variable residing under the manager process. MCE::Loops (mce_loop_f) opens the $domains file. The 5 workers persist while running (think of a 5 worker pool). Thus, 5 forks, not more.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Creating a hash within a fork
by marioroy (Prior) on Jun 05, 2015 at 02:43 UTC | |
by edimusrex (Monk) on Jun 05, 2015 at 21:02 UTC |