I solve this problem by writing unit tests. I start a Perl project with Module::Starter which provides the basis for your unit tests.
jeffa@jeffa:~/code$ module-starter --module=Foo::Bar --author=me --ema
Added to MANIFEST: Changes
Added to MANIFEST: ignore.txt
Added to MANIFEST: lib/Foo/Bar.pm
Added to MANIFEST: Makefile.PL
Added to MANIFEST: MANIFEST
Added to MANIFEST: README
Added to MANIFEST: t/00-load.t
Added to MANIFEST: t/manifest.t
Added to MANIFEST: t/pod-coverage.t
Added to MANIFEST: t/pod.t
Added to MANIFEST: xt/boilerplate.t
Created starter directories and files
jeffa@jeffa:~/code$ pushd Foo-Bar/
jeffa@jeffa:~/code/Foo-Bar$ prove -lr
./t/00-load.t ....... 1/? # Testing Foo::Bar 0.01, Perl 5.022001
./t/00-load.t ....... ok
./t/manifest.t ...... skipped: Author tests not required for installat
./t/pod-coverage.t .. skipped: Author tests not required for installat
./t/pod.t ........... skipped: Author tests not required for installat
./xt/boilerplate.t .. ok
All tests successful.
Files=5, Tests=4, 0 wallclock secs ( 0.02 usr 0.01 sys + 0.02 cusr
+ 0.01 csys = 0.06 CPU)
In my opinion, this is far better than a mere perl -c
because you now have a framework with which to add finer grain tests for your code. Replace watch
with a service like Jenkins or https://travis-ci.org
and increase your available options.
For what it is worth, i have been using vim exclusively for over 15 years now. Good quality, maintained unit tests are more valuable to me than an IDE (and i honestly consider IDEs to be crutches).
(the triplet paradiddle with high-hat)