TIMTOWT encapsulate globals... it depends on your future plans.

  1. If you have many subs which are supposed to react on "global" config settings you can always pass a hashref like already shown.

  2. Another approach is to have a dedicated package My_Config (which is effectively just a global hash, but doesn't pollute 'main::' anymore.

    Just set and read $My_Config::verbose

  3. The best (most radical) possibility to restrict the scope of variables are closures:

    { my $verbose; my $script; sub processDir { my $dir = shift @_; my $ret = qx($script $dir); chomp($ret); print qq(Output:"$ret"\n) if $verbose; } }

    nothing outside the outer block's scope can access them anymore.

    When needed you can also put getter() and setters() subs within this scope to change them dynamically.

  4. Saying this you realize that closures are just another way to think OOP, you are free to create a class Process and to realize the config settings as class attributes.

    But be aware that class attributes are only protected by convention, to make them really private one needs again closures... ;-) (update see also this reply)

HTH! =)

Cheers Rolf

( addicted to the Perl Programming Language)


In reply to Re: Best Practice: How do I pass option parameters to functions? by LanX
in thread Best Practice: How do I pass option parameters to functions? by An_Idea_Within

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.