Beefy Boxes and Bandwidth Generously Provided by pair Networks Joe
laziness, impatience, and hubris
 
PerlMonks  

Re (tilly) 1: A question about the best way to use subroutines

by tilly (Archbishop)
on Mar 25, 2001 at 18:14 UTC ( #67018=note: print w/ replies, xml ) Need Help??


in reply to A question about the best way to use subroutines

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...


Comment on Re (tilly) 1: A question about the best way to use subroutines
Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (8)
As of 2014-04-20 19:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (486 votes), past polls