Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Documentation

by spartan (Pilgrim)
on Sep 27, 2002 at 13:58 UTC ( [id://201199] : note . print w/replies, xml ) Need Help??

in reply to Documentation

Being a relative newbie to perl (I've been coding different projects in perl for about a year and a half now), I don't make use of POD. I know, bad boy. I prefer to write plain old html (in vi), and put it on a box here all the admins use as a documentation repository. I suppose it all depends on what level of knowledge you currently have, and what you will feel comfortable using.
I know that I fall into this category. When I learn how to use POD (that should be soon too) I'll go back and integrate all of my html docs into the scripts themselves as suggested earlier.

Very funny Scotty... Now PLEASE beam down my PANTS!

Replies are listed 'Best First'.
difficulty(pod) < difficulty(html)
by Wally Hartshorn (Hermit) on Sep 27, 2002 at 15:20 UTC

    POD is much -- much -- easier to learn than HTML. Frankly, there really isn't any learning involved. If you know HTML, you can learn POD in 30 seconds. Ready? Here we go:

    Marks the start of the POD
    =head1 Some Text for a Level 1 Heading
    Like an H1 tag
    =head2 Some Text for a Level 2 Heading
    Like an H2 tag
    =over 4
    Starts a list
    =item Some text
    Like a LI tag
    Ends the list
    Marks the end of the POD
    other text that starts in column 1
    Like a P tag, this will word-wrap into a paragraph.
    other text that is indented
    Like a PRE tag, this will be displayed unaltered.

    That's pretty much it, really. You just need to remember to follow each of the above with a blank line and you're set.

    There are also things to mark text as being B<bold>, or a F<filename>, or a L<link> to another module's documentation, but beyond that there isn't much to a POD. There is a semi-standard format for what to include in your documentation (what the various section headings are), but that would be equally true regardless of whether you were writing your docs in POD or HTML.

    Wally Hartshorn

      Yeah, except that none of your examples would work. You have to put blank lines before and after each POD directive. Having an =item with a label, but no text, confuses most processors.

      There are a lot of dark corners in POD. I am constantly reminding people when to indent, and when not to. I think POD violates a lot of the DWIM'ness of perl, because a lot of times POD does something really weird. Especially if you forget to put new lines in or something like that.

      Today one of my co-workers put a blank space on a line after some pod directive. Well, that doesn't work, but it is not clear why (unless you are using cperl-mode, and have those annoying underscores showing up all over your code). Hey, this isn't Python; whitespace shouldn't matter! :)

      That said, I always use POD, because that's all there is. pod2usage is great, too. But I wish we had something like JavaDoc, which is SO much easier to use, and it generates better output, too. Java has a head start as a strongly typed language, of course. But why can't we have =sub, =param, and =return tokens in POD?


        Yeah, except that none of your examples would work. You have to put blank lines before and after each POD directive.

        Which is why I noted "You just need to remember to follow each of the above with a blank line and you're set." Although what I wrote looks like an example, it wasn't intended to be. It's just a list (specifically, an HTML definition list). :-) Oh well.

        Wally Hartshorn

Re: Re: Documentation
by HamNRye (Monk) on Sep 27, 2002 at 23:30 UTC

    Even with that method, why not write your documentation in POD and then use Pod2Html to make up your documentation repository? Now your documentation and code is in one file, perl guys will appreciate finding POD, Minor code changes mean minor doc revs that can happen much easier.

    You can also create a webpage that will dynamically create the HTML from POD and server that up.

    <!--#exec cmd="pod2html $ARGSCRIPT /tmp/podoutput.htm" --> <!--#include file="/tmp/podoutput.htm" -->

    Remember, if you do it more than once, let the computer do it for you every time but the first.