У меня есть набор файлов HTML, которые используются в качестве интерфейса для доступа к некоторым файлам на сервере. Есть главная страница, которая ссылается на различные страницы отчетов, которые затем содержат ссылки на файлы. Я пытаюсь получить связанные файлы на каждой странице и определить, обновлены ли они. Тем не менее, я делаю это шаг за шагом, и я хочу сначала разобраться с этой частью.
Для справки структура папок такая:
//server/
|---pages/
|---+---MainPage.htm
|---+---reports/
|---+---+---Report1.htm
|---+---+---Report2.htm
Метод find_all_links()
получает нужные мне ссылки. Однако, когда я пытаюсь передать URL-адреса результирующих объектов WWW :: Mechanize :: Link в follow_link()
, он говорит, что файл не существует. Файл ДЕЙСТВИТЕЛЬНО существует, но не там, где он думает, что он существует. Как ни странно, переход по ссылке вручную в браузере работает нормально.
Ниже приведен мой код для решения этой проблемы.
use strict;
use warnings;
use WWW::Mechanize;
my $dir = '//server/pages';
chdir($dir);
my $mech = WWW::Mechanize->new();
$mech->get("file:$dir/MainPage.htm");
my @links = $mech->find_all_links(url_regex => qr/^\/reports\/.*/i);
foreach my $link (@links){
print $link->url(), "\n";
$mech->follow_link(url => $link->url());
# Get all links on this page and check the modified dates
...
$mech->back();
}
Он производит следующий вывод:
/reports/Report1.htm
Error GETing file://server/reports/Report1.htm: File `\\server\reports\Report1.htm` does not exist at script.pl line 15.
Путь к файлу, который он использует, неверен, и поэтому он не может найти файл. Как мне заставить его использовать правильный путь? Я также пробовал url_abs()
вместо url()
. Мы будем благодарны за любую помощь, руководство и / или понимание. Большое спасибо!
<a href="file://path/to/resource">...</a>
. - person ThisSuitIsBlackNot   schedule 25.12.2013