#!/usr/bin/perl -w use strict; my @result; my $content = do { local $/ = undef; }; $content =~ s/<\/h(\d)>/<\/h$1>\n/gi; while ($content =~ /(.*)<\/h\d>/gmi) { push( @result, "Level: ".$1.": ".$2); } foreach(@result){ print $_."\n"; } __DATA__ {{{%%TOC%%}}}

Test 1

Test

Test 2

Test 123

Test 3

Test

Test 4

Test

Test 5

Test 6

Test 7

Test