gpt4 book ai didi

perl - 如何通过文件名获取模块名称?

转载 作者:行者123 更新时间:2023-12-02 06:47:28 28 4
gpt4 key购买 nike

我有模块 Foo::Bar::Baz ,位于 /some_path/Foo/Bar/Baz.pm ,以及从 /some_path/Foo/Bar 运行的 perl 脚本.脚本需要分析此文件夹中的所有模块。

如何通过文件名 ( Foo::Bar::Baz ) 获取模块名称 ( Baz.pm )?我不能只是修剪 .pm结尾还有lib @INC 中的路径是不确定的

首先我应该使用 new_from_filename Module::Info的方法, 但不幸的是

Module loaded using new_from_file() won't have this information



看起来我需要一些进行静态代码分析的模块。有人知道它的名字吗?

最佳答案

包名不需要与加载它的文件名相匹配,或者 for the first package to .但是对于任何编写良好的模块,您可以use通常甚至一些奇怪的,Module::Metadata可以找到这些信息。作为一般规则,无论当前目录如何,您都应该使用绝对文件名,这可能会有所帮助。 (File::SpecPath::Tiny 可以提供帮助)

use strict;
use warnings;
use Module::Metadata;
my $metadata = Module::Metadata->new_from_file('/path/to/File.pm');
my $package = $metadata->name;

关于perl - 如何通过文件名获取模块名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54410957/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com