I know i'm late to this party, but i have this in my .vimrc:
in reply to Create and edit new scripts
This takes a stub file and copies it into a plugins directory (for use with Module::Pluggable), renames the package line and opens it for editing (it also works with subpackages). I also have this:
let packname=substitute(a:x, ".pm$","","")
if a:x !~ '\.pm$'
execute ':e Plugins/' . mfile
execute "%s/STUB/" .substitute(packname, "/", "::", "g")
For template toolkit templates (it doesn't use a stub, but will create a tt template in the correct place).
let mfile = a:x
if a:x !~ '\.tt$'
let mfile = mfile . ".tt"
execute ':e Templates/' . mfile