Just hanging around here inspires me to write all kinds of
code/snippets that i would never think of otherwise.
Going with Corion's advice about the Facade
Pattern (brian d foy wrote an excellent Perl Review
article
on that pattern by the way - you should read it), here is
my quick-n-dirty mini-tutorial:

Say you have a dynamic website whose content is driven by
a series of methods/functions contained in some library.
Currently, CGI.pm is being used to generate HTML. The
library (module) might look like:

They haven't even finished, but the boss is so impressed
that (s)he asks you to go ahead and substitute the new
methods in. What do you do? You write another "layer" -
another module that uses both libraries and
delegates which library to use for a given method call. A
first naive (as all my first approaches usually are) might
look like:

Go ahead and create those 4 files and make sure everything
works. So why naive? Because you probably have more than
4 methods in you old library, many more. I myself am too
lazy correctly type in every single method ... why not just
use AUTOLOAD? (don't you wish C had one?) Much like the
anonymous list i used on the last line of the test script,
we could use a similar technique. Here is a revised
Interface.pm:

Now all you need to do is add the name of the methods to
%new as they are completed. Once Old.pm has been
completely deprecated you could get rid of Interface.pm.

By this point you must be asking how all of these name changes are going to affect users ... because they are!
In this example, i had the luxury of knowing ahead of time
what was going to happen, so i programmed to the
Interface.pm module. In reality, i would be programming to
the Old.pm module instead. My recommendation is to simply
rename the old library to something else, and name your
Interface.pm the original old lib name. Then, when
the old library has been completely deprecated (oxymoron?), rename the new library to the original old lib name.

Sounds easy, but i know it really isn't. It's hard work
no matter how you slice it, but if you provide a seamless
way for the lib users to continue to use old methods while
new ones are being implemented, then it's probably worth
it (er ... whatever it is ...).

Brushing up and writing about the Facade Pattern has nothing
to do with my current projects, but i somehow feel more
refreshed for doing something new and "not my job" ...
oh, and beating the crap outta my drums doesn't hurt either ;)

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other