Try printing the value of $base, you will find it is empty. URI::URL->base() returns the previously set base for an relative URL. You already have the 'base' for converting to absolute: $url.
use strict; use warnings; use URI::URL; use WWW::Mechanize; use Data::Dumper; my $url = 'http://www.dcs.shef.ac.uk/'; my $webcrawler = WWW::Mechanize->new(); my $content = $webcrawler->get($url) || die( "!!etc" ); my @absolute_links = map { url( $_->[0], $url )->abs->as_string } @{ $webcrawler->links }; print Dumper \@absolute_links;
In general, to debug an issue like this, you just need to step through printing your intermediate values. Data::Dumper is your friend.
Addendum: The way you had written your map was destructive - it changed the old array as you created the new one. In general, try to think of your map block as an expression rather than a statement.
In reply to Re: Using URI::URL to go through an array of relative URL's
by fishbot_v2
in thread Using URI::URL to go through an array of relative URL's
by lampros21_7
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |