Dist::Requires is a Perl module that answers the question "Which packages are required to install a distribution with a particular version of perl?" The distribution can be in an archive file or unpacked into a directory. By default, the requirements will only include packages that are newer than the ones in the perl core (if they were in the core at all). You can turn this feature off to get all requirements. You can also control which version of perl to consider.
my $dr = Dist::Requires->new();
# From a distribution archive file...
my $prereqs = $dr->prerequisites(dist => 'Foo-Bar-1.2.tar.gz');
# From an unpacked distribution directory...
my $prereqs = $dr->prerequisites(dist => 'Foo-Bar-1.2');