Here's a little scratch tool I whipped up a few weeks ago. It's nothing esoteric, but it's saved me a bit of time both at work and at home, when considering how I want to arrange a new module, or more importantly, a set of interrelated modules.

As the name implies, this script accepts a simple text input that describes one or more modules, modeled in a very abbreviated Perl-like syntax. The input is line-oriented, but is somewhat forgiving of minor variations.

# input is line-oriented, similar to the following example:
package Foo::Bar - the package and summary to be created
isa Foo;
no This;
use That qw(that);
require The::Other;
require "Yet/Another.pm";
->new($arg); # returns a blessed hashref
->method($arg); # a normal object method
->property = $value; # a published property with accessor routine
->{property} = $value; # a private property without accessor

All it does is create the correct directories and makes stumps-- stubby implementations of the aforementioned module or modules. The template is very crude, but saves the labor of writing all the cursory comments, POD, and subs from scratch.

There's plenty of room for improvement and extension. One feature I didn't finish was to name various proposed tests, and have the stump script write the appropriate Test::* scripts alongside each boilerplate module.

Went to join the gridlock to see it
Held an eclipse party
Watched a live feed
I cn"t see tge kwubosd to amswr thus
I tried to see it, but 8000 miles of rock got in the way
What eclipse?
Wanted to see it, but they wouldn't reschedule it
Read the book instead