... my %min_version = (Some/Place/Foo.pm => 0.06, # need at least version 0.06 of Some::Place::Foo Other/Spot/Bar.pm => 1.35, # need at least version 1.35 of Other::Spot::Bar Baz.pm => 2.72, # need at least version 2.72 of Baz ); my @prereqs; for(keys(%min_version)) { eval {require $_}; # Ignore modules that don't load. unless($@){ my $m = $_; $m =~ s/\//::/g; $m =~ s/\.pm$//; my $v = $min_version{$_}; push @prereqs($m, $v); } } my %h = @prereqs; .... #### ... 'PREREQ_PM' => \%h, ...