2013-09-19 2 views
1
use HTML::TreeBuilder::XPath; 

my $temp_path = $ENV{'TEMP'}."\\html\\globals_func.html"; 

// prints as C:\Users\Rockstar\Appdata\Local\Temp\html\globals_func.html 

my $url = $temp_path; 
my $page = get($url) or die $!; 
my $p = HTML::TreeBuilder::XPath->new_from_content($page); 

Я получаю сообщение об ошибке: протокол «с» не поддерживаетсяPerl - использование HTML для извлечения данных

я получаю правильный выход, когда

my $url='file:///C:/Users/Rockstar/AppData/Local/Temp/html/globals_func.html'; 

Как я хочу, чтобы заставить ее работать во всех системах Я использую глобальную переменную среды.

Как изменить '\' на '/' в $ url с помощью регулярного выражения или есть ли другой способ?

HTML-файл присутствует локально в самой системе.

+1

Не нужно использовать 'LWP' для локализации локального файла. Используйте 'File :: Slurp' или делайте это вручную с помощью' open ($ fh, ...) 'и' <$fh> ', тогда вы можете использовать путь как есть. –

+0

в порядке. будет также изучать это. –

+0

Я использовал File :: Slurp и так просто, не используя столько регулярных выражений. Используйте read_line ($ file_path), и теперь моя программа также работает на linux. «File: ///» вызывала проблемы –

ответ

2

Это должно сработать для вас.

use HTML::TreeBuilder::XPath; 

my $temp_path = $ENV{'TEMP'}."\\html\\globals_func.html"; 

// prints as C:\Users\Rockstar\Appdata\Local\Temp\html\globals_func.html 

$temp_path=~tr/\\/\//; # Replaces backward slashes with forward slashes 

$temp_path='file://'.$temp_path; # Appends path with file:// 

my $url = $temp_path; 
my $page = get($url) or die $!; 
my $p = HTML::TreeBuilder::XPath->new_from_content($page); 
+0

, он отлично работает. но вы пропустили '/'. он должен быть $ temp_path = 'file: ///'.$temp_path; –

Смежные вопросы