当今大多数系统上的标准tags应用程序??Exuberant ctags, 已发布了5.7的版本供下载。其对Perl的支持的改进如下:(当然还有其他方面的改进)
- 增加了对关键字 'package' 的支持
- 增加了对多行子过程(subroutine)、package和常量定义的支持
- 增加了对可选子过程声明的支持
- 增加了对格式的支持
- 忽略混杂在定义和声明中的注释
- 修复对label名之后带空格的检测
- Fixed misidentification of fully qualified function calls as labels
如果你还没有用过tags或者ctags,现再就开始用吧。你的生活将和以前不再一样。
例如,如果你对源代码树运行ctags,然后再从shell里运行vim -t some_function,vim将会打开此文件并将光标置于some_function之处。另外,如果你用vim编辑一个文件,并将光标置于some_function上,并按下Ctrl-],vim就跳转到这个函数。其他编辑器也都有类似的绑定。
你的编辑器并不认识Perl,它只是依赖于ctags产生的tags文件,后者是一个标准的文件。当然,ctags并不是Perl本身,所以也没有那么精确。v5.7中的改进将使你的tag文件更为精确。
如果你弄了个Perl的module,也很容易为makefile增加一个tags用的target。你可以从作者的主要的module中((WWW::Mechanize, ack, 等等))的Makefile.PL中偷一个来用,或者,你也可以在你的Makefile.PL中增加如下代码:
sub MY::postamble {
my $postamble = <<'MAKE_FRAG'; .PHONY: tags tags: ctags -f tags --recurse --totals --exclude=blib --exclude=.svn --exclude='*~' --languages=Perl --langmap=Perl:+.t MAKE_FRAG }
(自从有了ctags 5.7, 再也不需要 --exclude=.svn 了,因为ctags现在可以自动忽略它了。)
原文链接:http://perlbuzz.com/2007/09/ctags-57-improves-perl-support.html

