ExtUtils::Installed, new(), modules(), version()

本文提供了一个使用Perl语言编写的脚本,该脚本利用ExtUtils::Installed模块来列出系统中已安装的所有Perl模块及其版本信息。通过遍历获取到的模块列表,脚本能够输出每个模块的名称和对应的版本号。

查看已经安装的模块的相应信息。

#!/usr/bin/perl 
use strict; 
use ExtUtils::Installed; 

my $inst= ExtUtils::Installed->new(); 
my @modules = $inst->modules(); 

foreach(@modules) 
{ 
        my $ver = $inst->version($_) || "???"; 
        printf("%-12s --  %s\n", $_, $ver);    
} 
exit 0;


<think>我们正在讨论ExtUtils::MakeMaker,这是一个Perl模块,用于创建Makefile以编译和安装Perl模块。 根据引用[1],ExtUtils-MakeMaker-6.62.tar.gz是一个用于创建Makefile的工具,它简化了Perl模块的编译和安装过程。 引用[2]中提到,使用ExtUtils::MakeMaker可以生成构建文件(Makefile)。 因此,我将介绍ExtUtils::MakeMaker的基本使用方法、功能以及如何利用它来安装Perl模块。 # ExtUtils::MakeMaker 使用指南 ExtUtils::MakeMaker 是一个Perl模块,它通过生成Makefile来自动化Perl模块的构建和安装过程。它是Perl标准库的一部分,因此在大多数Perl环境中都可用。 ## 基本使用步骤 1. **创建 Makefile.PL 文件**:在模块的根目录下创建一个名为`Makefile.PL`的文件,该文件是一个Perl脚本,用于定义模块的构建配置。 示例`Makefile.PL`内容: ```perl use ExtUtils::MakeMaker; WriteMakefile( NAME => 'My::Module', VERSION_FROM => 'lib/My/Module.pm', PREREQ_PM => { 'Some::Module' => 0, }, ); ``` 2. **生成 Makefile**:运行以下命令来生成Makefile: ```bash perl Makefile.PL ``` 3. **构建模块**:使用生成的Makefile来构建模块: ```bash make ``` 4. **测试模块**:运行测试(如果有的话): ```bash make test ``` 5. **安装模块**:将模块安装到系统中: ```bash make install ``` ## 主要功能 - **自动生成Makefile**:根据模块的元数据(如名称、版本、依赖等)生成适合当前系统的Makefile。 - **依赖管理**:通过`PREREQ_PM`指定模块的依赖,如果依赖未满足,Makefile.PL会提示用户。 - **版本控制**:可以从模块的.pm文件中自动提取版本号(使用`VERSION_FROM`)。 - **支持测试**:如果模块包含测试脚本(通常在`t/`目录下),可以通过`make test`运行。 - **清理构建**:提供`make clean`和`make realclean`命令来清理构建过程中生成的文件。 ## 高级配置 在`WriteMakefile`中,还可以设置其他参数,例如: - `AUTHOR`:模块作者信息 - `ABSTRACT`:模块摘要 - `LICENSE`:许可证类型 - `MIN_PERL_VERSION`:要求的最低Perl版本 ## 注意事项 - 在安装模块时,可能需要管理员权限(使用`sudo make install`)。 - 如果系统没有安装所需的依赖,需要先安装这些依赖。 引用[2]中也提到了使用ExtUtils::MakeMaker生成Makefile的步骤,这印证了上述过程。 §§相关问题§§ 1. 如何指定ExtUtils::MakeMaker中的模块依赖? 2. 除了ExtUtils::MakeMaker,还有哪些Perl模块构建工具? 3. 如何为Perl模块编写测试脚本? </think> # ExtUtils::MakeMaker 使用指南与功能介绍 ## 核心功能概述 ExtUtils::MakeMaker 是 Perl 生态中用于**自动化构建和安装 Perl 模块**的核心工具。它通过生成符合 Unix 标准的 Makefile 文件,简化了以下过程: 1. **编译C扩展**:自动处理XS/C语言扩展的编译 2. **依赖管理**:检查并声明模块依赖关系 3. **跨平台安装**:支持不同操作系统下的安装流程 4. **测试自动化**:集成测试套件执行机制[^1] ## 基础使用指南 ### 1. 创建 Makefile.PL 在模块根目录创建配置文件 `Makefile.PL`: ```perl use ExtUtils::MakeMaker; WriteMakefile( NAME => 'My::Module', VERSION_FROM => 'lib/My/Module.pm', PREREQ_PM => { 'Test::More' => 0, 'JSON' => 2.90, }, ABSTRACT_FROM => 'lib/My/Module.pm', AUTHOR => 'Your Name <email@example.com>', ); ``` ### 2. 标准构建流程 ```bash # 生成Makefile perl Makefile.PL # 编译模块 make # 运行测试 make test # 安装到系统 make install ``` ### 3. 关键配置参数 | 参数 | 说明 | 示例 | |------|------|------| | `NAME` | 模块名称(必须) | `'My::App'` | | `VERSION_FROM` | 版本来源文件 | `'lib/My/Module.pm'` | | `PREREQ_PM` | 依赖模块及版本 | `{'DBI' => '1.633'}` | | `LIBS` | 外部库链接 | `['-lm']` | | `INC` | 头文件路径 | `'-I/usr/local/include'` | | `OBJECT` | 自定义目标文件 | `'$(O_FILES)'` | ## 高级功能应用 ### 1. 条件编译配置 ```perl WriteMakefile( # ...基础配置... DEFINE => $ENV{DEBUG} ? '-DDEBUG=1' : '', CCFLAGS => '-Wall -O2', ); ``` ### 2. 自定义安装目标 ```perl package MY; sub postamble { return q{ install_extra: cp scripts/mytool $(DESTDIR)$(INSTALLSITESCRIPT) }; } ``` ### 3. 测试覆盖支持 ```perl use if $] >= 5.008, 'Devel::Cover'; WriteMakefile( # ...基础配置... test => { TESTS => 't/*.t' }, ); ``` ## 最佳实践建议 1. **版本管理**:始终使用 `VERSION_FROM` 自动提取版本号 2. **最小依赖**:精确声明最低版本要求(如 `'Module' => 1.23`) 3. **清理机制**:通过 `make clean` 和 `make realclean` 清理构建产物 4. **跨平台支持**:使用 `$Config{archname}` 处理架构差异 > **注意**:对于新项目,建议同时考虑现代替代方案如 **Module::Build**,但 ExtUtils::MakeMaker 在维护传统CPAN模块时仍是标准选择[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值