Sla*_*mac 2 c perl syntax-checking dynamic libraries
我想检查我的perl模块的语法(以及导入),但我不想检查动态加载的c库.
如果我做:
perl -c path_to_module
Run Code Online (Sandbox Code Playgroud)
我明白了:
Can't locate loadable object for module B::Hooks::OP::Check in @INC
Run Code Online (Sandbox Code Playgroud)
因为B :: Hooks :: OP :: Check正在加载一些动态c库,我不想检查那个......
你不能.
模块可以以多种方式影响使用它们的脚本,包括如何解析它们.
例如,如果模块导出
sub f() { }
Run Code Online (Sandbox Code Playgroud)
然后
my $f = f+4;
Run Code Online (Sandbox Code Playgroud)
手段
my $f = f() + 4;
Run Code Online (Sandbox Code Playgroud)
但如果是出口的话
sub f { }
Run Code Online (Sandbox Code Playgroud)
相同的代码意味着
my $f = f(+4);
Run Code Online (Sandbox Code Playgroud)
因此,必须加载模块以解析加载它的脚本.加载模块只是执行它,无论是用Perl还是C编写的.
也就是说,有些人把PPI放在一起,以满足像你这样的人的需求.它并不完美 - 由于前面所述的原因,它不能完美 - 但它仍将提供有用的结果.
顺便说一下,语法检查模块的正确方法是
perl -e'use Module;'
Run Code Online (Sandbox Code Playgroud)
使用-c可以在不存在时给出错误,反之亦然.
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |