http://www.perlmonks.org?node_id=995251


in reply to Re: Accessing a scalar value in another subroutine?
in thread Accessing a scalar value in another subroutine?

> Why do you want to do this rather than just use POD?

POD is normally used to describe the public API of a module and many people oppose weaving POD snippets close to subs.

Furthermore automatically finding the corresponding POD-part for a function isn't trivial.

Docstrings OTOH are closely tied and great for introspection in an interactive system, like REPLs or applications with embedded scripting.

I'm inspecting LISP docstrings in emacs every day when browsing thru functions.

Cheers Rolf

  • Comment on Re^2: Accessing a scalar value in another subroutine?

Replies are listed 'Best First'.
Re^3: Accessing a scalar value in another subroutine?
by Corion (Patriarch) on Sep 23, 2012 at 21:44 UTC

    If you are hell-bent on doing that, and having doc-strings for your functions, the following style may be to your taste:

    use vars %documentation; sub doc($$) { my ($for,$doc) = @_; $documentation{ $for } = $doc; }; doc('mysub1',<<'=cut'); =head2 C<< mysub1 >> This documents mysub1. An example: mysub1(); =cut sub mysub1 { ... }; doc('frobnicate',<<'=cut'); =head2 C<< frobnicate >> This documents frobnicate. An example: frobnicate(); =cut sub frobnicate { ... };

    You will note from history that this style never caught on.

    If you adhere to a strict documentation style, you may simply parse the POD and extract the function definitions from that. Using "docstrings" and parsing the module documentation are equivalent in that sense.

      well far from being DRY... :)

      Cheers Rolf

Re^3: Accessing a scalar value in another subroutine?
by Anonymous Monk on Sep 23, 2012 at 22:34 UTC

    Furthermore automatically finding the corresponding POD-part for a function isn't trivial.

    Yes, it is absolutely trivial, provided the pod actually documents the function. Pod::Select/Pod::Coverage ...