为 SublimeLinter 添加自定义路径到 Perl 库
Posted
技术标签:
【中文标题】为 SublimeLinter 添加自定义路径到 Perl 库【英文标题】:Add custom path to Perl libraries for SublimeLinter 【发布时间】:2013-07-30 21:54:41 【问题描述】:我正在使用 Sublime Text 2 编辑器进行 Perl 开发,现在我面临下一个问题。我有我的项目:
/home/alex/workspace/
在这个项目中,我有以下库:
/home/alex/workspace/lib/
当我在编辑文件时:
/home/alex/workspace/test.pl
在这个文件中我尝试加载库:
/home/alex/workspace/lib/myLib.pm
我有这样的代码:
#!/usr/bin/perl
use myLib;
sublimelinter 无法找到该库,因为它不在默认的@INC 路径中。有没有办法在不更改我的脚本源代码的情况下修改 Perl 的 @INC for sublimelinter?
我尝试将per-project settings 用于这样的 linter:
"folders":
[
"path": "/home/alex/workspace"
],
"settings":
"SublimeLinter":
"Perl" :
"lint_args":
[
"-I", "/home/alex/workspace/lib",
"-c",
"filename"
]
但这无济于事。
【问题讨论】:
您可以将/home/alex/workspace/lib
附加到PERL5LIB
环境变量中。但请确保 PERL5LIB
是调用脚本的进程环境的一部分。
【参考方案1】:
这些答案应该针对 sublime text 3 更新
打开首选项->包设置->SublimeLinter->设置-用户。
找到这个条目,并替换 /path/to/my/project
"linters":
"perl":
"include_dirs": ["/path/to/my/project"]
'
【讨论】:
【参考方案2】:这应该可行。不过可能有更好的做法,我不是专家。
#!/usr/bin/perl
use strict;
use warnings;
use lib "/home/alex/workspace/lib/";
use myLib;
这是一个链接:http://perldoc.perl.org/lib.html
这会有一些可移植性问题,但这个问题还有一些其他相关的答案:How can my Perl script find its module in the same directory?
另一个好来源http://learn.perl.org/faq/perlfaq8.html#How-do-I-add-a-directory-to-my-include-path-INC-at-runtime-
【讨论】:
使用use lib "lib/myLib";
会更好吗?为了可移植性,完整路径中的硬编码通常不好......
看起来use lib
必须有一个目录作为输入,但你可以这样做use lib "./lib"
其实这并不是我想要的。我的要求是以某种方式配置 sublime linter 以避免更改项目中的每个文件。
@Matt 我明白了。我的 Perl 有点生疏了,用 Python 可以import .lib.myModule
全部在一行
运行这个或者把它放到你的 .bashrc export PERL5LIB=/home/alex/workspace/lib/
以上是关于为 SublimeLinter 添加自定义路径到 Perl 库的主要内容,如果未能解决你的问题,请参考以下文章
在 SublimeLinter 的 sublimelinter_executable_map 中设置相对路径