#!/usr/bin/perl use strict; use warnings; use ExtUtils::Installed; use constant TRUE => 0; use constant FALSE => -1; use constant DEBUG => 1; my $params = shift; # cfengine sends params as single string my ($modulename, $requiredversion) = split(' ', $params); die "missing modulename!" unless $modulename; my $instmod = ExtUtils::Installed->new(); foreach my $module ((grep /^$modulename$/, $instmod->modules())) { my $version = $instmod->version($module); if ($version >= $requiredversion){ print STDERR "$modulename installed:$version required:$requiredversion - ok\n" if DEBUG; exit(TRUE); # installed and in correct version } else { print STDERR "$modulename installed:$version required:$requiredversion - failed\n" if DEBUG; exit(FALSE); # installed, but not correct version } } print STDERR "$modulename not installed - failed\n" if DEBUG; exit(FALSE); # false __END__ #### # ./cpanModVer.pl HTML::Mason 1.1 HTML::Mason installed:1.23 required:1.1 - ok # ./cpanModVer.pl CPAN 1.0 Argument "1.59_54" isn't numeric in numeric ge (>=) at ./cpanModVer.pl line 36.