CPAN and Tooling Concepts
Module Metadata
Tooling often describes a module with small metadata fields such as name, version, and license.
metadata
Metadata is descriptive information about a module or package.
Module Metadata
module_metadata.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $version = "1.2.0";
my %meta = (
name => "Example::Tool",
version => $version,
license => "perl",
);
my $summary = "$meta{name}-$meta{version}";
print "version=$version\n";
print "license=$meta{license}\n";
print "summary=$summary\n";
use strict;
use warnings;
my $version = "1.3.0";
my %meta = (
name => "Example::Tool",
version => $version,
license => "perl",
);
my $summary = "$meta{name}-$meta{version}";
print "version=$version\n";
print "license=$meta{license}\n";
print "summary=$summary\n";
use strict;
use warnings;
my $version = "2.0.0";
my %meta = (
name => "Example::Tool",
version => $version,
license => "perl",
);
my $summary = "$meta{name}-$meta{version}";
print "version=$version\n";
print "license=$meta{license}\n";
print "summary=$summary\n";
$version ← 1.2.0, %meta ← 3, $summary ← Example::Tool-1.2.0
4my $version→ 1.2.0 = "1.2.0"; #@version="1.3.0", "2.0.0"5my %meta→ 3 = (6 name => "Example::Tool",7 version => $version1.2.0,8 license => "perl",9);10my $summary→ Example::Tool-1.2.0 = "$metaExample::Tool{name}-$meta1.2.0{version}";1112print "version=$version1.2.0\n";13print "license=$metaperl{license}\n";14print "summary=$summaryExample::Tool-1.2.0\n";outputversion=1.2.0 license=perl summary=Example::Tool-1.2.0
$version ← 1.3.0, %meta ← 3, $summary ← Example::Tool-1.3.0
4my $version→ 1.3.0 = "1.3.0";5my %meta→ 3 = (6 name => "Example::Tool",7 version => $version1.3.0,8 license => "perl",9);10my $summary→ Example::Tool-1.3.0 = "$metaExample::Tool{name}-$meta1.3.0{version}";1112print "version=$version1.3.0\n";13print "license=$metaperl{license}\n";14print "summary=$summaryExample::Tool-1.3.0\n";outputversion=1.3.0 license=perl summary=Example::Tool-1.3.0
$version ← 2.0.0, %meta ← 3, $summary ← Example::Tool-2.0.0
4my $version→ 2.0.0 = "2.0.0";5my %meta→ 3 = (6 name => "Example::Tool",7 version => $version2.0.0,8 license => "perl",9);10my $summary→ Example::Tool-2.0.0 = "$metaExample::Tool{name}-$meta2.0.0{version}";1112print "version=$version2.0.0\n";13print "license=$metaperl{license}\n";14print "summary=$summaryExample::Tool-2.0.0\n";outputversion=2.0.0 license=perl summary=Example::Tool-2.0.0