http://www.perlmonks.org?node_id=425664

I've tried out Eclipse 3 with the EPIC plugin as my new editor. After a few days of 'so-so' results, I switched to the test version of EPIC--0.3.9 and now I'm now quite happy with Eclipse as my IDE. I expect the feature set to just keep getting better, too.

Which plugins are installed really makes Eclipse what it is. By default, Eclipse has a whole bunch of Java plugins which are not very useful to the mostly Perl programmer. Finding plugins that are compatible with version 3 is also a little tricky. Here's the list I'm using and the associated update sites. (You need the update site in order to install the plugin in my experience--the old method of extracting into the /plugin directory has not worked for me with 3.0.)

EPIC 0.3.9 http://e-p-i-c.sf.net/updates/testing Perl syntax and interpreter support
Colorer Editor http://colorer.sf.net/eclipsecolorer/ syntax highlighting for 'other' files
Azzuri Clay DB Modelling http://www.azzurri.jp/eclipse/plugins db schema editor (requires additional plugins from eclipse.org)
Subversion support http://subclipse.tigris.org/update (installed but didn't test this one)

There are still more plugins that look promising but I haven't tried yet--(http://people.redhat.com/pmuldoon/ for example.)

My EPIC templates config is in my scratchpad. Templates are like auto-complete, in the editor you type the first character(s) in the template name and press ctrl+space to insert the template if there's an exact match, if not you're prompted for which to use.

In my external programs, I've created entries for module-starter, module-info, and tpage. On windows, these run best if I give cmd.exe as the external command and the batch file as part of the command arguments.

What plugins or configuration tips do other monks using Eclipse 3.0+ for Perl programming have to offer?

Update: Per request, here is my 'EPIC templates' config in the post...

<?xml version="1.0" encoding="UTF-8"?> <templates><template name="for" description="C-style for loop" context +="perl" enabled="true">LABEL: for { my $$${var} = 0 ; $$${var} &lt; m +ax ; $$${var}++ ) {&#13; ${cursor}&#13; }</template><template name="foreach" description="perl-ish for loop" c +ontext="perl" enabled="true">for my $$${var} ( @${array} ) {&#13; ${cursor}&#13; }</template><template name="if" description="if statement" context="pe +rl" enabled="true">if ( ${cursor} ) {&#13; } &#13; </template><template name="if-elsif-else" description="if-elsif-else s +tatement" context="perl" enabled="true">if ( ${cursor} ) {&#13; } &#13; elsif ( ) { &#13; } &#13; else { &#13; }</template><template name="if-else" description="if-else statement" c +ontext="perl" enabled="true">if ( ${cursor} ) {&#13; } &#13; else { &#13; }</template><template name="eval-exception" description="eval exceptio +n-handling template" context="perl" enabled="true">eval { ${cursor} } +;&#13; if ($$@) {&#13; warn $$@;&#13; }</template><template name="sub" description="subroutine template" con +text="perl" enabled="true">sub ${cursor} {&#13; my ( ) = @_;&#13; &#13; }</template><template name="method" description="subroutine as method +template" context="perl" enabled="true">sub ${cursor} {&#13; my $$self = shift;&#13; my ( ) = @_;&#13; &#13; }</template><template name="sub" description="subroutine as method tem +plate" context="perl" enabled="true">sub ${cursor} {&#13; my $$self = shift;&#13; my ( ) = @_;&#13; &#13; }</template><template name="while" description="while each key value p +air" context="perl" enabled="true">while(($$key, $$value) = each(%${c +ursor})) {&#13; &#13; }&#13; </template><template name="while" description="while diamond" context= +"perl" enabled="true">while (&lt;&gt;) {&#13; ${cursor}&#13; }</template><template name="switch" description="switch construction f +rom perlsyn" context="perl" enabled="true">SWITCH: {&#13; (${cursor}) &amp;&amp; do { ; last SWITCH};&#13; // &amp;&amp; do { ; last SWITCH};&#13; }</template><template name="map" description="map" context="perl" enab +led="true">map { ${cursor} } </template><template name="grep" descrip +tion="grep" context="perl" enabled="true">grep { ${cursor} } </templa +te><template name="=head1" description="pod head1" context="perl" ena +bled="true">=head1 ${cursor}&#13; </template><template name="=head2" description="pod head2" context="pe +rl" enabled="true">=head2 ${cursor}&#13; </template><template name="=head3" description="pod head3" context="pe +rl" enabled="true">=head3 ${cursor}&#13; </template><template name="=head4" description="pod head4" context="pe +rl" enabled="true">=head4 ${cursor}&#13; </template><template name="=cut" description="pod cut" context="perl" +enabled="true">=cut&#13; &#13; ${cursor}&#13; </template><template name="=over" description="pod indent" context="pe +rl" enabled="true">=over 4&#13; &#13; =item ${cursor}&#13; &#13; =back&#13; </template><template name="=item" description="pod indent" context="pe +rl" enabled="true">=item ${cursor}</template></templates>

--Solo

--
You said you wanted to be around when I made a mistake; well, this could be it, sweetheart.