I know i'm late to this party, but i have this in my .vimrc:
function! New_Plugin(x)
let mfile=a:x
let packname=substitute(a:x, ".pm$","","")
if a:x !~ '\.pm$'
let mfile=mfile.".pm"
endif
execute ':e Plugins/' . mfile
:r files/stub.pm
:0d
execute "%s/STUB/" .substitute(packname, "/", "::", "g")
endfunction
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:
function! New_Template(x)
let mfile = a:x
if a:x !~ '\.tt$'
let mfile = mfile . ".tt"
endif
execute ':e Templates/' . mfile
endfunction
For template toolkit templates (it doesn't use a stub, but will create a tt template in the correct place).
a