#!/usr/bin/env perl
use 5.014;
use warnings;
my @html = (
'
2.1. Match Literal Text
',
'2.1.1 H3 Heading
',
'2.1.1.1 H4 Heading
',
'2.2. Match Nonprintable Characters
',
'2.3. Match One of Many Characters
',
);
my $re = qr{^([1-6. ]+)([^<]+)()$};
for my $i (0 .. $#html) {
$html[$i] =~ s{$re}{$1 . ' id="' . lc($3) =~ y/ /_/r . "\"$2$3$4"}e;
}
say for @html;
####
2.1. Match Literal Text
2.1.1 H3 Heading
2.1.1.1 H4 Heading
2.2. Match Nonprintable Characters
2.3. Match One of Many Characters