Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
This question also came up at When do you function?. As I said in that discussion, I like having lots of simple functions. But more important than having simple functions is having simple APIs.

So build on them. If you have a number of well-designed simple functions sitting around, then you should have little difficulty in producing another simple function that calls your other ones in order. Now the person who uses your code can call the one official function with a simple API, but anyone can read that and break it down...

Now one warning. Before going off and building your NiftyAPI™ it is worth putting a little energy into reading Perl's documentation. You see Perl comes with a wide range of functions that are fairly well suited to commonly felt needs. So in your case if you read open you will find that:

local *FH; open(FH, ">> $file") or die "Cannot append to $file: $!";
already will create the file if it needs to. Now what it doesn't do is the error check. It also won't create the path to the file. But if all you need is the file, then Perl already does the work for you. Likewise it is better to learn the various file test operators than write verbose functions for that.

However I have in the past happily created custom operations whose value was that they would create files relative to named configuration variables, creating paths if needed. Now would I expect to create the path every time? No. But using this I created a code-base for which a test environment was easy to create. Just change the configuration variables and run the program. It would create anything and everything that it needed to see...

In reply to Re (tilly) 1: A question about the best way to use subroutines by tilly
in thread A question about the best way to use subroutines by scottstef

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, 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, 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.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others perusing the Monastery: (7)
    As of 2018-04-24 13:16 GMT
    Find Nodes?
      Voting Booth?