I have made changes since my original post and more are forthcoming when I get inspired. So I do not make this thread any longer than it already is, I created a gist on GitHub. Now onto some comments.
- Did you know by mixing the POD in with the code, you added two pages worth of scrolling? With each =cut and the blank line after it, you added that much more scrolling. The code with the POD at the end is already 854 lines long. Adding another 70+ lines and 25% of a kb makes getting around the file more work. (If you have read my home node, file size still matters.)
- You have =head3 Setting up the list items before =head2 C<list>. The =head3 would be viewed as part of the =head2 C<paragraph> above it. My head levels were not arbitrary, they are written for (PO)document structure.
- Any element not exported does not get a POD heading for it.
- title - set with the title parameter in head.
- item - used in the list function.
- term - used in the definition_list function.
- definition - used in the definition_list function.
- cell - set with the rows parameter in table.
- row - set with the rows parameter in table.
- col - set with the cols parameter in table.
- cols - written but unused.
- legend - set by the legend parameter in fieldset.
- label - set by the label parameter in selection, textarea, and input functions.
- option - used in the selection function.
- $tab and a tabindex are mutually exclusive. tabindex would be an optional parameter in anchor, input, selection, and textarea.
- Comments are supposed to be little things, so one # and a space are enough. I think most text editors these days have syntax highlighting, so long strings of # are not needed.
Reading the POD in POD Checker would show you why I set up the POD as I did. You will see my document structure in all its glory. Any time I write a POD, I always check it with the POD checker.
I am not getting how your tabbed lines work. I have not tried it yet, since it is a major paradigm shift.
Have a cookie and a very nice day!