Разбор HTML в perl

Я пытаюсь проанализировать следующую структуру HTML с помощью perl. Мне нужно выбрать все элементы dd, содержащие сообщение класса, а также идентификатор. Все, что я хотел бы сделать script, - это цикл через все элементы dd и распечатать идентификатор элемента dd, но он должен игнорировать первый элемент dd, поскольку он является статическим и не будет меняться.

Он может быть с любым модулем perl, если он может быть установлен из cpan, чтобы упростить его. У меня нет большого опыта работы с perl и разбора html, поэтому любые указатели будут очень полезны.

Спасибо:)

Структура HTML:

<pre><code>
<html>
<head>
</head>
<body>
 .....other elements
    <div id="messages">
        <div class="header"></div>
        <dl>
            <dd class="message unread mc-friend mc-message">This is just a random message, do not parse</dd>
            <dd id="msg2" class="message unread mc-message">
                Hello
            </div>
            <dd id="msg3" class="message unread mc-message">
                Hello
            </dd>
        </dl>
    </div>
</body>
</html>
</pre></code>

Ответы

Ответ 1

Что-то вроде этого, быстро и просто:

#! /usr/bin/perl
use strict;
use warnings;

use Mojo::DOM;

my $html = "Your HTML goes here";

my $dom = Mojo::DOM->new;
$dom->parse($html);
my $skip;
for my $dd ($dom->find('dd[class*="message"]')->each) {
    print $dd->attrs->{id}, "\n" if $skip++;
}