|
|
| |
Module::Versions(3) |
User Contributed Perl Documentation |
Module::Versions(3) |
Module::Versions - Handle versions of loaded modules with flexible result
interface
This documentation refers to Module::Versions Version 0.01
$Revision: 522 $
Precautions: Alpha Release.
use Module::Versions;
# Simple Interface
list Module::Versions; # prints formatted results to STDOUT
Module::Versions->list; # prints formatted results to STDOUT
# Shortcuts
$vers = get Module::Versions; # retrieves loaded modules
$vers = Module::Versions->get; # retrieves loaded modules
$array = Module::Versions->ARRAY; # returns array with version infos
$hash = Module::Versions->HASH; # returns hash with version infos
$list = Module::Versions->SCALAR; # returns text list with version infos
$csv = Module::Versions->CSV; # returns csv list with version infos
$xml = Module::Versions->XML; # returns xml struct with version infos
$xsd = Module::Versions->XSD; # returns xml schema of version infos
$dtd = Module::Versions->DTD; # returns DTD of version infos
# Individual Parameters
$vers = Module::Versions # retrieves mods and vars as defined
->new($mods,$vars)
->get($criteria);
$vers->list($fd,$mask); # prints formatted results to file
$vers->list($fd,$preform); # prints preformatted results to file
$vers->list($fd,\&cb); # prints serialied results as handled
# in callback routine
$vers->data(\&cb); # returns transformed results as
# defined in callback routine
# Individual formatted output
list Module::Versions(*LOG, '%5d %1s %-20s %10s %-16s');
# prints individually formatted
# results to LOG
list Module::Versions(*DBIMPORT, '%s|%s|%s');
# prints individually formatted
# results to Database Import file
list Module::Versions(*FD, 'SCALAR');# prints text list results to file
list Module::Versions(*FD, 'CSV'); # prints csv list results to file
list Module::Versions(*FD, 'XML'); # prints xml struct results to file
list Module::Versions(*FD, 'XSD'); # prints xml schema to file
list Module::Versions(*FD, 'DTD'); # prints DTD to file
list Module::Versions(*FD, 'ARRAY'); # prints serialized results to file
list Module::Versions(*FD, 'HASH'); # prints serialized results to file
Module::Versions->list(*LOG); # prints formatted results to LOG
# Pretty Compact
Module::Versions->list # prints formatted results on STDOUT
->list(*XML,'XML'); # prints xml struct results to XML file
Module::Versions->list # prints formatted results on STDOUT
->list(*XSD,'XSD') # prints xml schema to XSD file
->list(*XML,'XML'); # prints xml struct results to XML file
Module::Versions->list # prints formatted results on STDOUT
->list(*DTD,'DTD') # prints DTD to DTD file
->list(*XML,'XML'); # prints xml struct results to XML file
Module::Versions handles versions of loaded modules with a flexible result
interface. The main goal is to get as much version informations as possible
about a module or module list with a simple call interface and an absolutely
flexible result interface. Module::Versions handles *loaded* and *loadable*
modules.
The motivation for writing this module was the need for better
support facilities to get informations about the used modules and versions
in the productivity environment. Module::Versions allows shipping
applications basically with something like a '-version' option (See
Getopt::Long) but with expanded functions.
Module::Versions tries to read the loaded/loadable module's
$VERSION. For extended purposes any private project
'version variables' can be fetched ($_VERSION,
$version, $REV, etc.).
Module::Versions has a flexible result interface to satisfy
different needs: results can be lists and data structures with different
formats - pre-formed ARRAY, HASH, SCALAR, CSV, XML/XSD/DTD and a full
flexible user callback interface.
It is for example very simple to print a good formatted version
list to the console and save a version.xml file (in conjunction with
an xsd-schema) at the same time with an absolutely minimum of coding
(SYNOPSIS, Pretty Compact) .
Module::Versions tries to load 'version.pm' to support Perl
5.10.0's $VERSION formatting.
- Calling
- Module::Versions Methods can be called as
Class methods: e.g. Module::Versions->new;
Instance methods: e.g. $versions->new;
Indirect objects: e.q. new Module::Versions;
- Shortcuts
- The standard chaining can be written with shortcuts:
1.) Module::Versions->new->get;
2.) Module::Versions->new->get->list;
3.) Module::Versions->new->get->data;
4.) Module::Versions->new->get->XML;
5.) $versions = Module::Versions->new->get-list;
$versions->list(*XSD, 'XSD');
$versions->list(*XML, 'XML');
can be written as
1.) Module::Versions->get; # result is an object
2.) Module::Versions->list; # result is an object and a printed list
3.) Module::Versions->data; # result is an ARRAY
4.) Module::Versions->XML; # result is a XML scalar
5.) Module::Versions->list # result is an object and a printed list
->list(*XSD,'XSD') # result is a XSD schema in file *XSD
->list(*XML,'XML'); # result is a XML scalar in file *XML
- Constuctor
- "new"
- Standard Methods
- "get",
"list",
"data"
- Preformed Methods
- "ARRAY",
"HASH",
"SCALAR",
"CSV",
"XML",
"XSD",
"DTD"
- new
- new(<MODULES>, <SELECTION>)
Creates a new Versions object.
The object contains a list of module names and a list of
variables, which will be scanned in addition to
$VERSION. The module list contains explicitely
defined names or the internal %INC names.
- <MODULES>
- String or ARRAY of strings; default is content of
%INC.
- <SELECTION>
- String or ARRAY of strings; default is 'VERSION'.
This may be a list of project specific version variables
that can be observed in addition to the Perl standard variable
'$VERSION', e.g. '$_VERSION', '$version', '$REV'. See '$_VERSION'
in this source (='Mumified VERSION').
The selection of the Perl standard variable '$VERSION' is
mandantory and cannot be reset.
- get
- get(<CRITERIA>)
Retrieve "<MODULES>"
as defined before and use the
"<SELECTION>" as defined in
object by the constructor.
The result can be accessed by
"list",
"data" or the shortcuts
"ARRAY",
"HASH",
"SCALAR",
"CSV" and
"XML".
- <CRITERIA>
- String or ARRAY of strings; default formatting of the version info will be
done as 'normal' (e.g. v0.10.0), if the module 'version.pm'
("SEE ALSO", version) is installed and can be 'required' -
otherwise the original presentation will be left untouched (e.q.
0.01). By default the result will contain information about 'my
own' module (Module::Versions) as well but will ignore any information
about 'unloadable' modules. A possibly loaded 'version.pm' module will not
be shown.
Default is set to not "oldver",
not "notme", not
"all" and not
"version" .
- oldver
- Tries to use the historical versions of Perl itself prior to 5.6.0, as
well as the Camel rules for the $VERSION (e.q.
0.01). This 'untouched' presention can be ensured only if the
module 'version.pm' had not been loaded before by the script or
another module. If the 'version.pm' was loaded, a 'version.pm' default
will be used (e.q. 0.010). See EXAMPLES.
- notme
- Suppress 'my own' package version (Module::Versions).
- all
- Show 'unknown modules' also.
- version
- Show 'version' module also. Influences
"oldver" criterium.
- list
- list(<FD>, <MASK>)
- list(<FD>, <PREFORM>)
- list(<FD>, <CALLBACK>)
Prints a formatted module list to a file.
If no parameters are defiend
"list" prints to STDOUT in an
predefined format. An opened filedescriptor
"<FD>" can define another result
file.
A mask "<MASK>"
redefines the standard format. ALternatively a preformed fileformat
("<PREFORM>") can be selected to
print in standard formats.
For indivudual requirements a
"<CALLBACK>" interface can be
used.
- <FD>
- Filedescriptor, default *STDOUT.
- <MASK>
- String, default '%5d %s[
%s %s
%s ]' in sprintf format. See perldoc -f sprintf.
Default result:
1 [ AutoLoader VERSION v5.600.0 ]
2 [ Carp VERSION v1.30.0 ]
3 *[ Config VERSION unknown ]
4 [ Cwd VERSION v3.10.0 ]
Mask needs 3 or 5 arguments.
- 5 Arguments
---- Examples ----
1. cnt [numeric] 1 2
2. error [string] *
3. module [string] Carp File
4. variable [string] VERSION Module
5. value [string] 1.030 unknown
- 3 Arguments
---- Examples ----
1. module [string] Carp File
2. variable [string] VERSION Module
3. value [string] 1.030 unknown
- <PREFORM>
- String, no default.
The following strings are valid:
- 'ARRAY'
- Print a serialized ARRAY. Ref: "ARRAY".
$versions = [['AutoLoader','VERSION','5.600'],...];
- 'HASH'
- Print a serialized HASH. Ref: "HASH".
$versions = {'AutoLoader' => {'VERSION' => '5.600'},...};
- 'SCALAR'
- Print a simple text list.
Carp,VERSION,1.030 # Module, Name, Value
strict,VERSION,1.030
File,Module,unknown # 'all': Module 'File' not found
Data::Dumper,VERSION,2.121_020
Win32::PerlExe::Env,VERSION,0.050 # Standard variable $VERSION
Win32::PerlExe::Env,_VERSION,0.050001507 # Project variable $_VERSION
- 'CSV'
- Print a simple CSV list.
Module,Name,Value # Header
Carp,VERSION,1.030 # Data
strict,VERSION,1.030 # :
File,Module,unknown #
Data::Dumper,VERSION,2.121_020 #
Win32::PerlExe::Env,VERSION,0.050 #
Win32::PerlExe::Env,_VERSION,0.050001507 #
- 'XML'
- Print a XML file sructure.
Default format, if no 'XSD' or
'DTD' call was executed before.
<?xml version="1.0" encoding="UTF-8"?>
<versions>
<version module="Carp" name="VERSION">1.030</version>
<version module="strict" name="VERSION">1.030</version>
<version module="File" name="Module">unknown</version>
<version module="Data::Dumper" name="VERSION">2.121_020</version>
<version module="Win32::PerlExe::Env" name="VERSION">0.050</version>
<version module="Win32::PerlExe::Env" name="_VERSION">0.050001507</version>
</versions>
If 'XSD' was called before:
<?xml version="1.0" encoding="UTF-8"?>
<versions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="xsd/versions.xsd">
<version module="Carp" name="VERSION">1.030</version>
<version module="strict" name="VERSION">1.030</version>
:
</versions>
If 'DTD' was called before:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE versions SYSTEM "dtd/versions.dtd">
<versions>
<version module="Carp" name="VERSION">1.030</version>
<version module="strict" name="VERSION">1.030</version>
:
</versions>
- 'XSD'
- Print a 'XML' file related XSD schema file.
- 'DTD'
- Print a 'XML' file related DTD file.
- <CALLBACK>
- CODE reference, no default. Interface
sub cb {
my ( $versions, $names ) = @_;
# Do anything and build result...
return $result;
}
- data
- data(<CALLBACK>)
Result from callback
("<CALLBACK>") routine, default
callback is "ARRAY";
- ARRAY
Result is an ARRAY:
[
[
'AutoLoader', # Module
'VERSION', # Variable
'5.600' # Value
],
:
:
:
[
'warnings::register',
'VERSION',
'1.000'
]
];
- HASH
Result is a HASH:
{
'Carp' => { # Module
'VERSION' => '1.030' # Variable and Value
},
'Data::Dumper' => {
'VERSION' => '2.121_020'
},
'File' => { # Criterium was 'all'...
'Module' => 'unknown' # Module 'File' not found
},
'Win32::PerlExe::Env' => {
'VERSION' => '0.050', # Standard variable $VERSION
'_VERSION' => '0.050001507 # Project variable $_VERSION
},
}
- SCALAR
Result is a simple text SCALAR. Ref:
'SCALAR'.
- CSV
Result is a simple CSV text scalar. Ref:
'CSV'.
- XML
Result is a XML text scalar. Ref:
'XML'.
- XSD
Result is a XSD text scalar. Ref:
'XSD'.
- DTD
Result is a DTD text scalar. Ref:
'DTD'.
The XML generation allows an experimental feature to build XML data which can be
validated. This will be done magically if one of the following sequences will
be used:
1.) $v->list(*XSD,'XSD')->list(*XML,'XML');
2.) $v->list(*DTD,'DTD')->list(*XML,'XML');
See examples of this distributions.
This is an Alpha Release.
The XSD/DTD methods are experimental.
Some parts of this documentation may be marked as *** tbd ***.
Send bug reports to my email address or use the CPAN RT
system.
version
Module::Find, Module::InstalledVersion, Module::Info,
Module::List, Module::Locate, Module::Which, Module::Which::List
Thomas Walloschke <thw@cpan.org>.
Copyright (c) 2006 Thomas Walloschke (thw@cpan.org). All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself, either Perl version 5.8.6 or,
at your option, any later version of Perl 5 you may have available. See
perlartistic.
Last changed $Date: 2006-09-19 13:26:13 +0200 (Di, 19
Sep 2006) $.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |