#!/usr/bin/perl -w use strict; use warnings; use Parallel::ForkManager; use LWP::UserAgent ; my $refUrlList = []; my $maxChild = "3"; my $maxRedir = "5"; my $maxSize = "300"; my $timeout = "5"; (my $logFile = $0) =~ s/\.(\w+)$/\.log/; for ( @ARGV){ if ( -f ){ open ( IN, "<", $_) or die "Cant open $_: $!\n"; while (){ push(@$refUrlList, $_); } close ( IN) or die "Close Failed: $_: $!\n"; } } &multiUrl( $refUrlList); sub multiUrl { my $refUrls = shift; open ( OUT, ">> $logFile") or die "Can't open $logFile: $!\n"; my $pm = new Parallel::ForkManager( $maxChild); for ( @$refUrls) { chomp( my $url = $_); $pm->start and next; my $ua = LWP::UserAgent->new; $ua->agent( $0); $ua->max_redirect( $maxRedir); $ua->max_size($maxSize); $ua->timeout( $timeout); my $res = $ua->get( $url); print OUT "$url | " . $res->code . " | " . $res->message ."\n"; print "$url | " . $res->code . " | " . $res->message ."\n"; $pm->finish; } $pm->wait_all_childs; close ( OUT) or die "Close Failed: $logFile: $!\n"; }