in reply to Re: Can't call method "proxy" on an undefined value at
in thread Can't call method "proxy" on an undefined value at

OK, you've got me on the right track. Working but not pulling the proxy value from the file. Here's the modified code

open(my $fh, '<', 'cities.txt') or die $!; print $fh; open(my $prx, '<', 'proxies.txt') or die $!; print $prx; mkdir 'Bing', 0755; mkdir 'Bing/1Parsed/', 0755; mkdir 'Bing/1Parsed/Html/', 0755; chomp(my @cities = <$fh>); close($fh); chomp(my @prx = <$prx>); print $prx; close($prx); open($fh, '<', 'keywords.txt') or die $!; for my $city (@cities) { seek($fh, 0, 0); while (my $keywords = <$fh>) { chomp($keywords); print "$city $keywords\n"; my $xml1 = $link1 . $city ."+". $keywords . $link2 . $city ."+". $ +keywords . $link3; #my $xmla = $link3 . $row . ".com"; #my $xmlx = $link4 . $row; my $filename1 = "Bing/".($city)."_". ($keywords) . ".html"; open my $fh1, ">", $filename1 or die("Could not open file. $!"); #toggle proxy selection my $prx=$_; my $ua = LWP::UserAgent->new; $ua->proxy(['http'], $prx); print $prx; $ua->agent('Mozilla/8.0');

Replies are listed 'Best First'.
Re^3: Can't call method "proxy" on an undefined value at
by NetWallah (Canon) on Feb 09, 2016 at 05:54 UTC
    Your code does not compile (Missing brackets).

    You are redefining "my $prx", which was previously a file handle.

    You are assigning an un-initialized $_ to $prx.

    Perhaps you meant it to look something like this:

    my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/8.0'); for my $p (@prx){ print "Current proxy:$p\n"; $ua->proxy(['http'], $p); # Use this UA/Proxy to fetch something.... }

            ...The words of the Prophets are written on the Facebook wall.

      Thanks. I see my error. I've modified the code and I can pull the proxy from the list but I'm getting the following error, "Proxy must be specified as absolute URI; '1.0.251.108:8080' is not at" with the code below:

      open(my $fh, '<', 'cities.txt') or die $!; print $fh; open(my $prx, '<', 'proxies.txt') or die $!; print $prx; mkdir 'Bing', 0755; mkdir 'Bing/1Parsed/', 0755; mkdir 'Bing/1Parsed/Html/', 0755; chomp(my @cities = <$fh>); close($fh); chomp(my @prx = <$prx>); print $prx; close($prx); open($fh, '<', 'keywords.txt') or die $!; for my $city (@cities) { seek($fh, 0, 0); while (my $keywords = <$fh>) { chomp($keywords); print "$city $keywords\n"; my $xml1 = $link1 . $city ."+". $keywords . $link2 . $city ."+". $ +keywords . $link3; #my $xmla = $link3 . $row . ".com"; #my $xmlx = $link4 . $row; my $filename1 = "Bing/".($city)."_". ($keywords) . ".html"; open my $fh1, ">", $filename1 or die("Could not open file. $!"); #toggle proxy selection my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/8.0'); for my $p (@prx){ print "Current proxy:$p\n"; $ua->proxy('http', $p); # Use this UA/Proxy to fetch something.... }

      I've read the can LPW info but I can't see how to fix this.

        Two mistakes:

        * You are missing the square brackets around the [http]

        * You do not have a proper URL in $p

        Try this:

        $ua->proxy(['http'], "http://$p");

                ...The words of the Prophets are written on the Facebook wall.