首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >perl脚本来检查是否安装了perl模块。

perl脚本来检查是否安装了perl模块。
EN

Stack Overflow用户
提问于 2012-02-18 01:13:00
回答 4查看 2.5K关注 0票数 3

我希望能够在列表中的每个模块上运行这个测试。不知道如何在每个项目上循环perl。

代码语言:javascript
运行
复制
use Module::Load;
eval {
  load Image::Magick;
  1;
} or die "you need Module to run this program";
  • Bit::向量
  • 鲤鱼:氏族
  • 检查::ISA
  • DBD::Oracle
  • DBI
  • 资料来源:GUID
  • 资料来源:OptList
  • 资料来源:TreeDumper
  • 资料来源:UUID
  • 日期:Calc
  • 发展::大小
  • ExtUtils::MakeMaker
  • 日志::发送
  • 日志::调度::File::滚动
  • 日志::调度::FileRotate
  • 日志::Log4perl
  • Params::Util
  • Params::验证
  • 类别::自然
  • 分则:出口商
  • 分::安装
  • 分:上行
  • Sys::Syslog
  • 任期:规模
  • 测试::异常
  • 测试::简单
  • 测试::使用::确定
  • 树::简单
EN

回答 4

Stack Overflow用户

发布于 2012-02-18 10:13:58

试一试:

代码语言:javascript
运行
复制
#!/usr/bin/perl 
use 5.010;
use strict;
use warnings;

my @modules = qw(
    Bit::Vector
    Carp::Clan
    Check::ISA
    DBD::Oracle
    DBI
    Tree::Simple
);

for(@modules) {
    eval "use $_";
    if ($@) {
        warn "Not found : $_" if $@;
    } else {
        say "Found : $_";
    }
}
票数 6
EN

Stack Overflow用户

发布于 2012-02-18 01:50:01

如果您不需要使用Perl来完成这个任务,您可以在shell脚本中这样做:

代码语言:javascript
运行
复制
#!/bin/sh
MODULES="Data::Dumper Foobar::Test"

for i in $MODULES ; do
  if $(perl -M$i -e '1;' >/dev/null 2>&1 ); do
    echo "Ok."
  else
    echo "No." 
  fi
done

除了使用echo之外,您还可以做其他事情。

代码序列:

代码语言:javascript
运行
复制
perl -MData::Dumper '1;'

将以错误值0 (ok)和

代码语言:javascript
运行
复制
perl -MFoobar::Test '1;'

退出时,错误值为2(发生错误)。

票数 3
EN

Stack Overflow用户

发布于 2012-02-18 14:07:57

我想回复@daxim的评论,似乎您希望发布您的模块。为此,我将选择Module::BuildDist::Zilla。几乎我的所有模块都使用这两种机制中的一种,所以如果您需要示例,可以随意浏览我的GitHub。查找Build.PLdist.ini文件(分别用于M::B或D::Z )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9340046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档