2016-06-29 6 views
-3

У меня есть несколько файлов HTML в подпапке. На каждой странице HTML есть несколько идентификаторов страниц, таких как <a id="page_1"/>, <a id="page_2"/>, <a id="page_3"/>, и так далее. Я хочу перечислить идентификаторы страниц, на которых есть страница HTML, например page_3:index.html, page_4:chapter.html, page_5:content.htmlPerl: Как перечислить идентификаторы из нескольких HTML?

Как это сделать?

ответ

2

Некоторые люди думают, что самый простой способ включает в себя регулярное выражение:

use v5.22; 
while(<<>>) { 
    next unless /<a id="(.*?)"/; 
    say "$ARGV: $1"; 
    } 

Это могли бы получить ответ быстро в грязной дороге. Это может быть приемлемым для быстрой одноразовой задачи. Я использую extra-safe double diamond that v5.22 added.

Если вам нужно что-то более надежное, например, Mojo::DOM:

use v5.22; 
use Mojo::DOM; 

foreach my $file (@ARGV) { 
    my $data = do { local(@ARGV, $/) = $file; <<>> }; 
    my $dom = Mojo::DOM->new($data); 
    my @ids = $dom->find('a[id]')->map(attr => 'id')->each; 
    say "$ARGV: @ids"; 
    } 
Смежные вопросы