The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Module::MetaInfo - Report meta information from perl module distribution files

USAGE

use Module::MetaInfo.pm;
$mod=new Module::MetaInfo(perl-module-file.tar.gz);
$desc=$mod->description();

DESCRIPTION

This module is designed to provide the primary interface to Perl meta information for perl module distribution files (this, however, is a prototype and hasn't yet been accepted by the "perl community", so don't count on it yet). The module is designed to allow perl modules to be easily and accurately packaged by other package systems such as RPM and DPKG.

The Module::MetaInfo module isn't actually designed to get any meta information from the perl module. Instead it serves as an entry point to other modules which have their own way of doing that. Since there isn't yet any agreed way to store meta-information in perl modules this may not be very reliable.

Currently there are two ways of getting meta information: a) guessing from the contents of the module and b) using a directory structure which has not yet been accepted by the perl community. The default way this module works is to first try b) then try a) then to give up.

IMPLEMENTATION AND INHERITANCE..

This module doesn't inherit anything. Instead it simply uses three different classes Module::MetaInfo::BestGuess Module::MetaInfo::AutoGuess and Module::MetaInfo::ModList, first trying functions from AutoGuess then from BestGuess and finally from ModList.

FUNCTIONS

Module::MetaInfo::new(<dist_filename> [<modlist_filename>)

new creates the object and initialises it. The argument is the path of the perl module distribution file.

If you provide the perl modules list then meta information from the modules list will be available.

$thing->::verbose() $thing->::scratch_dir()

These functions affect class settings (or if called for an object, only the settings of the object: afterwards that object will ignore changes to the class settings).

Currently implemented are verbose which prints debugging info and scratch_dir which sets the directory to be used for unpacking perl modules.

description / docs / etc...

These functions provide meta information. They are provided by the base classes. In all cases the functions will return undef if they are unable to get meta information of that kind. If there is no function then MetaInfo will die (croak). If you want to work with different versions of MetaInfo that may implement different sets of functions then use eval to catch the die.

For more information about the different functions available, see the subsidiary packages such as Module::MetaInfo::AutoGuess and Module::MetaInfo::DirTree.

N.B. we will throw an exception if you call a function which isn't provided by any of the modules. This is important since some functions are only present if a modules list has been provided to new. Either don't call those functions unless you have provided the modules list or catch the exception.

RETURN CONVENTIONS

Meta information function either return a scalar (name / description) or an array value. If an array is returned, it will actually be returned as a reference to an array if the function is used in a scalar context.

In Module::MetaInfo.pm the scalar return is always used so any modules used by it must provide this mode.

FUTURE FUNCTIONS

There are a number of other things which should be implemented. These can be guessed from looking at the possible meta-information which can be stored in the RPM or DPG formats, for example. Examples include:

  • copyright - GPL / as perl / redistributable / etc.

  • application area - Database / Internet / WWW / HTTP etc.

  • suggests - related applications

In many cases this data is generated currently by package building tools simply by using a fixed string. The function should do better than that in almost all cases or else it is't worth having...

COPYRIGHT

You may distribute under the terms of either the GNU General Public License, version 2 or (at your option) later or the Artistic License, as specified in the Perl README.

BUGS

Please see bugs in sub modules. Especially warnings in Module::MetaInfo::_Exctractor.

AUTHOR

Michael De La Rue.

SEE ALSO

pm-metainfo