浅谈配置Eclipse支持Perl脚本开发
1 Installation
EPIC(Eclipse Perl Integration)是一个基于Eclipse平台的开源Perl集成开发环境。其支持的功能有语法高亮、语法检查、代码提示、Perldoc支持、模版、Perl调试器和正则表达式插件等。
在安装EPIC之前需要安装Eclipse3.1以上版本,此外还需要安装Perl解释器(Unix和Linux平台通常会缺省安装Perl,Windows平台上可以安装ActivePerl,下载地址www.activestate.com)。
可以通过Eclipse Update Manager来安装EPIC。选择菜单Help->Software and Updates->Find and Install,在弹出的Install/Update对话框中选择Search for new features to install然后单击下一步,在弹出的Install对话框中单击New Remote Site,在弹出的对话框中输入Name(例如EPIC)和URL(http://e-p-i-c.sf.net/updates)然后单击确定。接下来在Install对话框中选中刚才新建的Site,单击完成。按照向导的指示完成后续的过程,忽略途中提示的未经签名的警告。重启Eclipse后,EPIC应该已经安装完毕了。
如果要暂时禁用或者卸载EPIC,选择菜单Help->Software and Updates->Manage Configuration,展开弹出对话框左侧的树控件,选中当前版本的EPIC并单击右键,在弹出菜单中选择禁用或者卸载。
2 Setting Up Preferences
选择菜单Window->Preferences,在弹出的Preferences对话框左侧的树控件中选择Perl EPIC以打开Perl EPIC General Preferences页。这个页中包含了Perl解释器的路径、解释器的类型以及其他选项等。
关于解释器的类型,除了standard之外,还可以选择Cygwin。如果选择Cygwin,那么@INC数组的内容会有所变化。至于@INC数组,当使用use ModuleName来装载模块时,Perl会在@INC数组中列出的每一个目录中查找模块。因为use是在编译时装载模块,所以任何对@INC的修改都需要在编译时发生。可以通过BEGIN块在编译时向@INC中添加值,例如BEGIN { push @INC, ‘/path’ }。@INC通常包含(假设Perl安装在/perl):/perl/lib /perl/site/lib .。核心模块是安装在”perl/lib”目录中,非核心模块安装在”perl/site/lib”目录中,”.”这个目录表示当前的工作目录。在Eclipse中选中Perl工程,选择Project->Properties,在弹出的对话框中选择Perl Include Path,然后就可以向@INC中添加项目。如果没有指定绝对路径,那么这个路径是相对于工程目录的。可以使用标准的Eclipse变量,例如${project_loc}。
关于调试器相关的设置有以下两个:
Enable debugger console。这个选择只是在你希望调试EPIC自身的时候有用,在其它情况下不要使用。在调试的时候,一个特殊的控制台(单击Debug View中的perl Cd项目以显示此控制台)会显示EPIC和后台的Perl调试器之间的通信内容。
Suspend debugger at first statement。此项目缺省是选中的,选中它会导致调试器在脚本的开始处停止,而不论该处是否有断点。
如果不安装PadWalker模块也是可以使用调试器的,但是在这种情况下local variables 不会被显示。可以从CPAN上下载PadWalker的最近版本并进行安装,例如使用Perl安装中附带的安装管理器(ActiveState附带的是Perl Package Manager)进行安装。
EPIC在进行语法检查时如果发现语法错误,那么会显示错误或警告图标。如果右键单击该图标,并在弹出菜单中选择Explain Errors/Warnings,那么在Explain Errors/Warnings view中会显示具体的错误或警告信息。
如果安装了ActivePerl,那么会同时安装Perldoc。通过Perldoc可以查找相关的帮助文档,例如在命令行上输入 Perldoc -f use可以查看use的用法。如果在程序中选择部分文本并单击右键,并在弹出菜单中选择Perldoc(如果没有任何选中,那么会弹出一个输入对话框),那么在Perldoc View中会显示查找到的帮助文档。
在Content Assist Preference 页中可以指定代码提示的触发字符,通常不需要对其进行修改,只要取消选中Inspect Variables即可关闭此功能。需要注意的是:目前Content Assist支持使用箭头操作符的方法调用,例如:
$smtp = Net::SMTP->new(); $smtp->[content assist]
不支持间接对象的方法调用,例如:
$smtp = new Net::SMTP; $smtp->[no content assist]
在Templates Preference 页中可以创建、编辑或者删除模版。例如在New Template对话框的Name文本框中输入for,在Pattern中输入for(${var} = 0; ${var} Preferences->General->Keys配置),之前定义的模版会被插入到代码中。按下TAB键可以切换模版中的用户自定义变量(例如${var}和${max})。
在Task Tags Preference 页中可以指定一系列用来在注释中作为任务标记的关键字,缺省有TODO 和TASK;EPIC 使用 PerlTidy 来格式化源码,Source Formatter Preference页用来指定PerlTidy的命令行参数。
3 Perl Project
推荐以核心Perl发布的惯例形式来组织你的工程:
将你自己的模块保存在工程的某个子目录中,例如在工程根目录下建立一个lib目录,用来保存所有*.pm文件。并将这个子目录添加到@INC中。
将包名映射成子目录名,例如将Foo::Bar包中的代码保存在lib/Foo/Bar.pm文件中,并保证lib/Foo/Bar.pm中只包含Foo::Bar包中的代码。
你自己的Perl脚本保存可以保存在工程中的任何目录里,例如工程根目录下的bin或者cgi-bin目录。
在装载一个包时,不要使用require,而是使用use,例如use Foo::Bar。
4 RegExp Plug-in