my $m = new WWW::Mechanize; my $ROOT = "/path/to/download/directory"; sub visit { my $url = shift; $m->get($url); ... for my $link ($m->links) { visit($link->url_abs); # problem is here } } visit("file:$ROOT/index.html"); #### -- $link->url_abs is "file:/foo" -- $link->url_abs is "file:/path/to/download/bar"