use warnings; use strict; use Mojo::DOM; my $html = "

a

\n

b

\n

c

\n

d

\n" ."

e

\n

f

\n

g

\n

h

\n

i

\n" ."

j

\n

k

\n"; my $dom = Mojo::DOM->new($html); $dom->find('h2')->each(sub { my $next = $_->next; my $new = $_->wrap('
'); if ( $next && !$next->matches('h1') ) { $new->append($next); $next->remove; } }); print "$dom";