我希望能够在列表中的每个模块上运行这个测试。不知道如何在每个项目上循环perl。
use Module::Load;
eval {
load Image::Magick;
1;
} or die "you need Module to run this program";发布于 2012-02-18 10:13:58
试一试:
#!/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 : $_";
}
}发布于 2012-02-18 01:50:01
如果您不需要使用Perl来完成这个任务,您可以在shell脚本中这样做:
#!/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之外,您还可以做其他事情。
代码序列:
perl -MData::Dumper '1;'将以错误值0 (ok)和
perl -MFoobar::Test '1;'退出时,错误值为2(发生错误)。
发布于 2012-02-18 14:07:57
我想回复@daxim的评论,似乎您希望发布您的模块。为此,我将选择Module::Build或Dist::Zilla。几乎我的所有模块都使用这两种机制中的一种,所以如果您需要示例,可以随意浏览我的GitHub。查找Build.PL或dist.ini文件(分别用于M::B或D::Z )。
https://stackoverflow.com/questions/9340046
复制相似问题