我在子文件夹中有多个HTML文件。每个HTML页面都有多个页面ID,例如<a id="page_1"/>
,<a id="page_2"/>
,<a id="page_3"/>
等等。我希望列出页面ID,其中包含page_3:index.html
,page_4:chapter.html
,page_5:content.html
我该怎么做?
答案 0 :(得分: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";
}