For me there is a sort of natural progression in all of this. For instance, I generally can't stand to duplicate a line of code unless I really have to. An obvious rule says that if you have to do the same thing from more than one place, make it a function. If you abstract this to the level of .pl files, then you can't really think of any of your code as throw-away. Same rule here says that if you use it more than once make it a module! O-O if you like, but re-use is your friend here.
in reply to The Illusion of One-Offs
There is another idea that comes to mind. From the point of view of craftsmanship, your code should be the best you can make it. It would be better to think of it staying around forever (given the number of 'prototypes' that ship, this is all to real) rather than heading for the bit bucket--even if true. If coding is done with the idea of one-of, it is all to easy to let that slip into 'knock off' or worse.hsm