Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

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

by LanX (Canon)
on Sep 23, 2012 at 21:01 UTC ( #995251=note: print w/ replies, xml ) Need Help??


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?
Re^3: Accessing a scalar value in another subroutine?
by Corion (Pope) 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 ...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995251]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2014-08-30 21:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (294 votes), past polls