【发布时间】:2023-03-28 19:23:01
【问题描述】:
我有模块Foo::Bar::Baz,它位于/some_path/Foo/Bar/Baz.pm,以及从/some_path/Foo/Bar 运行的perl 脚本。脚本需要分析此文件夹中的所有模块。
如何通过文件名 (Baz.pm) 获取模块名称 (Foo::Bar::Baz) ?我不能只修剪.pm 结尾,而且@INC 中的lib 路径是不确定的
首先我应该使用Module::Info的new_from_file和name方法,但不幸的是
使用 new_from_file() 加载的模块不会包含此信息
看起来我需要一些模块来进行静态代码分析。有人知道它的名字吗?
【问题讨论】:
-
您能否提供更详细的解释来说明您正在尝试做什么或期望输出什么?我几乎可以肯定我的Devel::Examine::Subs 可以满足您的要求,但已经有一段时间了,我需要进一步澄清测试(我在后台使用PPI)。
-
您假设存在 一个(单一的、唯一的)模块名称。情况不一定如此。如果有 0 个或 2+ 个名字,你想做什么?
-
更改您的脚本,使其接受两个输入:基本目录 (
/some_path) 和包名称 (Foo::Bar::Baz,或者甚至可能是Foo::Bar::*) -
谢谢大家的回答,最后我用Module::Metadata 代替了我的project。
标签: perl