--- /dev/null
+Revision history for Perl extension Pod::Constants.
+
+0.16 Sun Oct 21 21:55:59 NZDT 2007
+ - Lots of boring release engineering. Imported to git, etc.
+ Removed the debian/ directory. Updated the license (now not
+ just Artistic)
+
+0.15 Mon Apr 8 19:43:38 BST 2002
+ - Really fixed lack of re-entrancy, added test script for same
+
+0.14 Mon Apr 8 17:34:35 BST 2002
+ - Fixed lack of re-entrancy
+ - Fixed CR/LF handling properly
+
+0.13 Wed Jan 23 16:55:59 GMT 2002
+ - Fixed regular expression bug affecting perl
+ versions <= 5.005.
+
+0.12 Mon Dec 10 16:21:54 GMT 2001
+ - Added add_hook and delete_hook function
+ - more details on man page
+
+0.11 Tue Nov 20 18:24:34 GMT 2001
+ - Corrected man page, added section on automatic Makefile.PL
+ generation
+
+0.10 Sat Nov 10 01:14:00 GMT 2001
+ - Added support for importing data into hashes, arrays, and
+ processing with closures.
+ - not released to world at large (man page incorrect)
+
+0.02 Fri Nov 2 04:15:54 GMT 2001
+ - now handles "perl -c Module.pm" properly
+
+0.01 Mon Oct 15 19:39:20 2001
+ - original version. scalars only.
--- /dev/null
+# Copyright (C) 2001, 2002, 2007 Sam Vilain. All Rights Reserved.
+# This module is free software. It may be used, redistributed and/or
+# modified under the terms of the Perl Artistic License, version 2 or
+# later, OR the terms of the GNU General Public License, v3 or later.
+
+package Pod::Constants;
+
+=head1 NAME
+
+Pod::Constants - Include constants from POD
+
+=head1 SYNOPSIS
+
+ use vars qw($myvar $VERSION @myarray $html %myhash);
+
+ use Pod::Constants -trim => 1,
+ 'Pod Section Name' => \$myvar,
+ 'Version' => sub { eval },
+ 'Some list' => \@myarray,
+ html => \$html,
+ 'Some hash' => \%myhash;
+
+ =head2 Pod Section Name
+
+ This string will be loaded into $myvar
+
+ =head2 Version
+
+ # This is an example of using a closure. $_ is set to the
+ # contents of the paragraph. In this example, "eval" is
+ # used to execute this code at run time.
+ $VERSION = 0.17;
+
+ =head2 Some list
+
+ Each line from this section of the file
+ will be placed into a seperate array element.
+ For example, this is $myarray[2].
+
+ =head2 Some hash
+
+ This text will not go into the hash, because
+ it doesn't look like a definition list.
+ key1 => Some value (this will go into the hash)
+ var2 => Some Other value (so will this)
+ wtf = This won't make it in.
+
+ =head2 %myhash's value after the above:
+
+ ( key1 => "Some value (this will go into the hash)",
+ var2 => "Some Other value (so will this)" )
+
+ =begin html <p>This text will be in $html</p>
+
+ =cut
+
+=head1 DESCRIPTION
+
+This module allows you to specify those constants that should be
+documented in your POD, and pull them out a run time in a fairly
+arbitrary fashion.
+
+Pod::Constants uses Pod::Parser to do the parsing of the source file.
+It has to open the source file it is called from, and does so directly
+either by lookup in %INC or by assuming it is $0 if the caller is
+"main" (or it can't find %INC{caller()})
+
+=head2 ARBITARY DECISIONS
+
+I have made this code only allow the "Pod Section Name" to match
+`headN', `item', `for' and `begin' POD sections. If you have a good
+reason why you think it should match other POD sections, drop me a
+line and if I'm convinced I'll put it in the standard version.
+
+For `for' and `begin' sections, only the first word is counted as
+being a part of the specifier, as opposed to `headN' and `item', where
+the entire rest of the line counts.
+
+=cut
+
+use 5.004;
+use strict;
+
+use base qw(Pod::Parser Exporter);
+use Data::Dumper;
+use Carp;
+
+use vars qw($VERSION);
+$VERSION = 0.17;
+
+# An ugly hack to go from caller() to the relevant parser state
+# variable
+my %parsers;
+
+sub end_input {
+ #my ($parser, $command, $paragraph, $line_num) = (@_);
+ my $parser = shift;
+
+ return unless $parser->{active};
+
+ print "Found end of $parser->{active}\n" if ($parser->{DEBUG});
+ my $whereto = $parser->{wanted_pod_tags}->{$parser->{active}};
+ print "\$_ will be set to:\n---\n$parser->{paragraphs}\n---\n"
+ if ($parser->{DEBUG});
+
+ $parser->{paragraphs} =~ s/^\s*|\s*$//gs
+ if $parser->{trimmed_tags}->{$parser->{active}};
+
+ if (ref $whereto eq "CODE") {
+ print "calling sub\n" if $parser->{DEBUG};
+ local ($_) = $parser->{paragraphs};
+ $whereto->();
+ print "done\n" if $parser->{DEBUG};
+ } elsif (ref $whereto eq "SCALAR") {
+ print "inserting into scalar\n" if $parser->{DEBUG};
+ $$whereto = $parser->{paragraphs};
+ } elsif (ref $whereto eq "ARRAY") {
+ print "inserting into array\n" if $parser->{DEBUG};
+ @$whereto = split /\n/, $parser->{paragraphs};
+ } elsif (ref $whereto eq "HASH") {
+ print "inserting into hash\n" if $parser->{DEBUG};
+ # Oh, sorry, should I be in LISP101?
+ %$whereto = (map { map { s/^\s*|\s*$//g; $_ }
+ split /=>/, $_ }
+ grep m/^
+ ( (?:[^=]|=[^>])+ ) # scan up to "=>"
+ =>
+ ( (?:[^=]|=[^>])+ =? )# don't allow more "=>"'s
+ $/x,
+ split /\n/, $parser->{paragraphs});
+ } else { die $whereto }
+ $parser->{active} = undef;
+}
+
+# Pod::Parser overloaded command
+sub command {
+ my ($parser, $command, $paragraph, $line_num) = @_;
+
+ $paragraph =~ s/(?:\r\n|\n\r)/\n/g;
+
+ print "Got command =$command, value=$paragraph\n"
+ if $parser->{DEBUG};
+
+ $parser->end_input() if $parser->{active};
+
+ my $does_she_want_it_sir;
+
+ my ($lookup);
+ # first check for a catch-all for this command type
+ if ( exists $parser->{wanted_pod_tags}->{"*$command"} ) {
+ $parser->{paragraphs} = $paragraph;
+ $parser->{active} = "*$command";
+ $does_she_want_it_sir = "oohw";
+
+ } elsif ($command =~ m/^(head\d+|item|(for|begin))$/) {
+ if ( $2 ) {
+ # if it's a "for" or "begin" section, the title is the
+ # first word only
+ ($lookup, $parser->{paragraphs}) =
+ ($paragraph =~ m/^\s*(\S*)\s*(.*)/s);
+ } else {
+ # otherwise, it's up to the end of the line
+ ($lookup, $parser->{paragraphs})
+ = ($paragraph =~ m/^\s*(\S[^\n]*?)\s*\n(.*)$/s);
+ }
+
+ # Look for a match by name
+ if (defined $lookup
+ and exists $parser->{wanted_pod_tags}->{$lookup}) {
+ print "Found $lookup\n" if ($parser->{DEBUG});
+ $parser->{active} = $lookup;
+ $does_she_want_it_sir = "suits you sir";
+ }
+
+ } else {
+ # nothing
+ print "Ignoring =$command (not known)\n" if $parser->{DEBUG};
+ }
+
+ {
+ local $^W = 0;
+ print "Ignoring =$command $paragraph (lookup = $lookup)\n"
+ if (!$does_she_want_it_sir and $parser->{DEBUG})
+ }
+}
+
+# Pod::Parser overloaded verbatim
+sub verbatim {
+ my ($parser, $paragraph, $line_num) = @_;
+ $paragraph =~ s/(?:\r\n|\n\r)/\n/g;
+
+ print("Got paragraph: $paragraph ("
+ .($parser->{active}?"using":"ignoring").")\n")
+ if $parser->{DEBUG};
+
+ if (defined $parser->{active}) {
+ $parser->{paragraphs} .= $paragraph;
+ }
+}
+
+# Pod::Parser overloaded textblock
+sub textblock { goto \&verbatim }
+
+=head1 FUNCTIONS
+
+=head2 import(@args)
+
+This function is called when we are "use"'d. It determines the source
+file by inspecting the value of caller() or $0.
+
+The form of @args is HOOK => $where.
+
+$where may be a scalar reference, in which case the contents of the
+POD section called "HOOK" will be loaded into $where.
+
+$where may be an array reference, in which case the contents of the
+array will be the contents of the POD section called "HOOK", split
+into lines.
+
+$where may be a hash reference, in which case any lines with a "=>"
+symbol present will have everything on the left have side of the =>
+operator as keys and everything on the right as values. You do not
+need to quote either, nor have trailing commas at the end of the
+lines.
+
+$where may be a code reference (sub { }), in which case the sub is
+called when the hook is encountered. $_ is set to the value of the
+POD paragraph.
+
+You may also specify the behaviour of whitespace trimming; by default,
+no trimming is done except on the HOOK names. Setting "-trim => 1"
+turns on a package "global" (until the next time import is called)
+that will trim the $_ sent for processing by the hook processing
+function (be it a given function, or the built-in array/hash
+splitters) for leading and trailing whitespace.
+
+The name of HOOK is matched against any "=head1", "=head2", "=item",
+"=for", "=begin" value. If you specify the special hooknames "*item",
+"*head1", etc, then you will get a function that is run for every
+
+Note that the supplied functions for array and hash splitting are
+exactly equivalent to fairly simple Perl blocks:
+
+Array:
+
+ HOOK => sub { @array = split /\n/, $_ }
+
+Hash:
+
+ HOOK => sub {
+ %hash =
+ (map { map { s/^\s+|\s+$//g; $_ } split /=>/, $_ }
+ (grep m/^
+ ( (?:[^=]|=[^>])+ ) # scan up to "=>"
+ =>
+ ( (?:[^=]|=[^>])+ =? )# don't allow more "=>"'s
+ $/x, split /\n/, $_));
+ }
+
+Well, they're simple if you can grok map, a regular expression like
+that and a functional programming style. If you can't I'm sure it is
+probably voodoo to you.
+
+Here's the procedural equivalent:
+
+ HOOK => sub {
+ for my $line (split /\n/, $_) {
+ my ($key, $value, $junk) = split /=>/, $line;
+ next if $junk;
+ $key =~ s/^\s+|\s+$//g
+ $value =~ s/^\s+|\s+$//g
+ $hash{$key} = $value;
+ }
+ },
+
+=cut
+
+sub import {
+ my $class = shift;
+
+ # if no args, just return
+ return unless (@_);
+
+ # try to guess the source file of the caller
+ my $source_file;
+ if (caller ne "main") {
+ (my $module = caller().".pm") =~ s|::|/|g;
+ $source_file = $INC{$module};
+ }
+ $source_file ||= $0;
+
+ ( -f $source_file )
+ or croak ("Cannot find source file (guessed $source_file) for"
+ ." package ".caller());
+
+ # nasty tricks with the stack so we don't have to be silly with
+ # caller()
+ unshift @_, $source_file;
+ goto \&import_from_file;
+}
+
+=head2 import_from_file($filename, @args)
+
+Very similar to straight "import", but you specify the source filename
+explicitly.
+
+=cut
+
+use IO::Handle;
+
+sub import_from_file {
+ my $filename = shift;
+
+ my $parser = __PACKAGE__->new();
+
+ $parser->{wanted_pod_tags} = {};
+ $parser->{trimmed_tags} = {};
+ $parser->{trim_next} = 0;
+ $parser->{DEBUG} = 0;
+ $parser->{active} = undef;
+ $parsers{caller()} = $parser;
+
+ $parser->add_hook(@_);
+
+ print "Pod::Parser: DEBUG: Opening $filename for reading\n"
+ if $parser->{DEBUG};
+ my $fh = new IO::Handle;
+ open $fh, "<$filename"
+ or die ("cannot open $filename for reading; $!");
+
+ $parser->parse_from_filehandle($fh, \*STDOUT);
+
+ close $fh;
+}
+
+=head2 add_hook(NAME => value)
+
+This function adds another hook, it is useful for dynamic updating of
+parsing through the document.
+
+For an example, please see t/01-constants.t in the source
+distribution. More detailed examples will be added in a later
+release.
+
+=cut
+
+sub add_hook {
+ my $parser;
+ if ( UNIVERSAL::isa($_[0], __PACKAGE__) ) {
+ $parser = shift;
+ } else {
+ $parser = $parsers{caller()}
+ or die("add_hook called, but don't know what for - "
+ ."caller = ".caller());
+ }
+ while (my ($pod_tag, $var) = splice @_, 0, 2) {
+ #print "$pod_tag: $var\n";
+ if (lc($pod_tag) eq "-trim") {
+ $parser->{trim_next} = $var;
+ } elsif ( lc($pod_tag) eq "-debug" ) {
+ $parser->{DEBUG} = $var;
+ } elsif (lc($pod_tag) eq "-usage") {
+ # an idea for later - automatic "usage"
+ #%wanted_pod_tags{@tags}
+ } else {
+ if ((ref $var) =~ /^(?:SCALAR|CODE|ARRAY|HASH)$/) {
+ print "Will look for $pod_tag.\n"
+ if ($parser->{DEBUG});
+ $parser->{wanted_pod_tags}->{$pod_tag} = $var;
+ $parser->{trimmed_tags}->{$pod_tag} = 1
+ if $parser->{trim_next};
+ } else {
+ die ("Sorry - need a reference to import POD "
+ ."sections into, not the scalar value $var"
+ ." importing $pod_tag into ".caller());
+ }
+ }
+ }
+}
+
+=head2 delete_hook(@list)
+
+Deletes the named hooks. Companion function to add_hook
+
+=cut
+
+sub delete_hook {
+ my $parser;
+ if ( UNIVERSAL::isa($_[0], __PACKAGE__) ) {
+ $parser = shift;
+ } else {
+ $parser = $parsers{caller()}
+ or die("delete_hook called, but don't know what for - "
+ ."caller = ".caller());
+ }
+ while ( my $label = shift ) {
+ delete $parser->{wanted_pod_tags}->{$label};
+ delete $parser->{trimmed_tags}->{$label};
+ }
+}
+
+=head2 CLOSURES AS DESTINATIONS
+
+If the given value is a ref CODE, then that function is called, with
+$_ set to the value of the paragraph. This can be very useful for
+applying your own custom mutations to the POD to change it from human
+readable text into something your program can use.
+
+After I added this function, I just kept on thinking of cool uses for
+it. The nice, succinct code you can make with it is one of
+Pod::Constant's strongest features.
+
+Below are some examples.
+
+=head1 EXAMPLES
+
+=head2 Module Makefile.PL maintenance
+
+Tired of keeping those module Makefile.PL's up to date? Note: This
+method seems to break dh-make-perl.
+
+=head2 Example Makefile.PL
+
+ eval "use Pod::Constants";
+ ($Pod::Constants::VERSION >= 0.11)
+ or die <<EOF
+ ####
+ #### ERROR: This module requires Pod::Constants 0.11 or
+ #### higher to be installed.
+ ####
+ EOF
+
+ my ($VERSION, $NAME, $PREREQ_PM, $ABSTRACT, $AUTHOR);
+ Pod::Constants::import_from_file
+ (
+ 'MyTestModule.pm',
+ 'MODULE RELEASE' => sub { ($VERSION) = m/(\d+\.\d+)/ },
+ 'DEPENDANCIES' => ($PREREQ_PM = { }),
+ -trim => 1,
+ 'NAME' => sub { $ABSTRACT=$_; ($NAME) = m/(\S+)/ },
+ 'AUTHOR' => \$AUTHOR,
+ );
+
+ WriteMakefile
+ (
+ 'NAME' => $NAME,
+ 'PREREQ_PM' => $PREREQ_PM,
+ 'VERSION' => $VERSION,
+ ($] >= 5.005 ? ## Add these new keywords supported since 5.005
+ (ABSTRACT => $ABSTRACT,
+ AUTHOR => $AUTHOR) : ()),
+ );
+
+=head2 Corresponding Module
+
+ =head1 NAME
+
+ MyTestModule - Demonstrate Pod::Constant's Makefile.PL usefulness
+
+ =head2 MODULE RELEASE
+
+ This is release 1.05 of this module.
+
+ =head2 DEPENDANCIES
+
+ The following modules are required to make this module:
+
+ Some::Module => 0.02
+
+ =head2 AUTHOR
+
+ Ima Twat <ima@twat.name>
+
+ =cut
+
+ use vars qw($VERSION);
+ use Pod::Constants -trim => 1,
+ 'MODULE RELEASE' => sub { ($VERSION) = m/(\d+\.\d+) or die };
+
+=head1 AUTHOR
+
+Sam Vilain, <samv@cpan.org>
+
+=head1 BUGS/TODO
+
+I keep thinking it would be nice to be able to import an =item list
+into an array or something, eg for a program argument list. But I'm
+not too sure how it would be all that useful in practice; you'd end up
+putting the function names for callbacks in the pod or something
+(perhaps not all that bad).
+
+Would this be useful?
+
+ Pod::Constants::import(Foo::SECTION => \$myvar);
+
+Debug output is not very readable
+
+=head1 PATCHES WELCOME
+
+If you have any suggestions for enhancements, they are much more likely
+to happen if you submit them as a patch to the distribution.
+
+Source is kept at
+
+ git://utsl.gen.nz/Pod-Constants
+
+=cut
+
+BEGIN {
+ Pod::Constants->import
+ (
+ SYNOPSIS => sub {
+ eval pop @{[ grep /^\s*\$VERSION/, split /\n/, $_ ]}
+ }
+ )
+};
+
+1.4142;
--- /dev/null
+Changes
+Constants.pm
+Makefile
+Makefile.PL
+MANIFEST
+MYMETA.json
+MYMETA.yml
+README
+SIGNATURE
+t/01-constants.t
+t/cheese.pl
+t/Cheese.pm
+t/ReEntrancyTest.pm
+META.yml Module YAML meta-data (added by MakeMaker)
+META.json Module JSON meta-data (added by MakeMaker)
--- /dev/null
+{
+ "abstract" : "Include constants from POD",
+ "author" : [
+ "Sam Vilain <sam@vilain.net>"
+ ],
+ "dynamic_config" : 1,
+ "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690",
+ "license" : [
+ "unknown"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "Pod-Constants",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
+ "prereqs" : {
+ "build" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "configure" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "runtime" : {
+ "requires" : {
+ "Pod::Parser" : "1.13",
+ "Test::Simple" : "0.18"
+ }
+ }
+ },
+ "release_status" : "stable",
+ "version" : 0.17
+}
--- /dev/null
+---
+abstract: 'Include constants from POD'
+author:
+ - 'Sam Vilain <sam@vilain.net>'
+build_requires:
+ ExtUtils::MakeMaker: '0'
+configure_requires:
+ ExtUtils::MakeMaker: '0'
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690'
+license: unknown
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: '1.4'
+name: Pod-Constants
+no_index:
+ directory:
+ - t
+ - inc
+requires:
+ Pod::Parser: '1.13'
+ Test::Simple: '0.18'
+version: 0.17
--- /dev/null
+{
+ "abstract" : "Include constants from POD",
+ "author" : [
+ "Sam Vilain <sam@vilain.net>"
+ ],
+ "dynamic_config" : 0,
+ "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690",
+ "license" : [
+ "unknown"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "Pod-Constants",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
+ "prereqs" : {
+ "build" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "configure" : {
+ "requires" : {
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "runtime" : {
+ "requires" : {
+ "Pod::Parser" : "1.13",
+ "Test::Simple" : "0.18"
+ }
+ }
+ },
+ "release_status" : "stable",
+ "version" : 0.17
+}
--- /dev/null
+---
+abstract: 'Include constants from POD'
+author:
+ - 'Sam Vilain <sam@vilain.net>'
+build_requires:
+ ExtUtils::MakeMaker: '0'
+configure_requires:
+ ExtUtils::MakeMaker: '0'
+dynamic_config: 0
+generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690'
+license: unknown
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: '1.4'
+name: Pod-Constants
+no_index:
+ directory:
+ - t
+ - inc
+requires:
+ Pod::Parser: '1.13'
+ Test::Simple: '0.18'
+version: 0.17
--- /dev/null
+# This Makefile is for the Pod::Constants extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.98 (Revision: 69800) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+# ANY CHANGES MADE HERE WILL BE LOST!
+#
+# MakeMaker ARGV: ()
+#
+
+# MakeMaker Parameters:
+
+# ABSTRACT_FROM => q[Constants.pm]
+# AUTHOR => [q[Sam Vilain <sam@vilain.net>]]
+# BUILD_REQUIRES => { }
+# CONFIGURE_REQUIRES => { }
+# NAME => q[Pod::Constants]
+# PREREQ_PM => { Test::Simple=>q[0.18], Pod::Parser=>q[1.13] }
+# TEST_REQUIRES => { }
+# VERSION_FROM => q[Constants.pm]
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/x86_64-linux-gnu/perl/5.20/Config.pm).
+# They may have been overridden via Makefile.PL or on the command line.
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E
+DLEXT = so
+DLSRC = dl_dlopen.xs
+EXE_EXT =
+FULL_AR = /usr/bin/ar
+LD = cc
+LDDLFLAGS = -shared -L/usr/local/lib -fstack-protector
+LDFLAGS = -fstack-protector -L/usr/local/lib
+LIBC = libc-2.19.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 3.2.0-4-amd64
+RANLIB = :
+SITELIBEXP = /usr/local/share/perl/5.20.1
+SITEARCHEXP = /usr/local/lib/x86_64-linux-gnu/perl/5.20.1
+SO = so
+VENDORARCHEXP = /usr/lib/x86_64-linux-gnu/perl5/5.20
+VENDORLIBEXP = /usr/share/perl5
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = Pod::Constants
+NAME_SYM = Pod_Constants
+VERSION = 0.17
+VERSION_MACRO = VERSION
+VERSION_SYM = 0_17
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 0.17
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1p
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR =
+PREFIX = /usr
+PERLPREFIX = $(PREFIX)
+SITEPREFIX = $(PREFIX)/local
+VENDORPREFIX = $(PREFIX)
+INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.20
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.20.1
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = $(PERLPREFIX)/lib/x86_64-linux-gnu/perl/5.20
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = $(SITEPREFIX)/lib/x86_64-linux-gnu/perl/5.20.1
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = $(VENDORPREFIX)/lib/x86_64-linux-gnu/perl5/5.20
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = $(PERLPREFIX)/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = $(SITEPREFIX)/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = $(VENDORPREFIX)/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = $(PERLPREFIX)/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLSITESCRIPT = $(SITEPREFIX)/bin
+DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
+INSTALLVENDORSCRIPT = $(VENDORPREFIX)/bin
+DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
+INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = $(SITEPREFIX)/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/share/perl/5.20
+PERL_ARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.20
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKEFILE_OLD = Makefile.old
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/x86_64-linux-gnu/perl/5.20/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_DIR = 755
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER = /usr/share/perl/5.20/ExtUtils/MakeMaker.pm
+MM_VERSION = 6.98
+MM_REVISION = 69800
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
+MAKE = make
+FULLEXT = Pod/Constants
+BASEEXT = Constants
+PARENT_NAME = Pod
+DLBASE = $(BASEEXT)
+VERSION_FROM = Constants.pm
+OBJECT =
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP =
+
+# Handy lists of source code files:
+XS_FILES =
+C_FILES =
+O_FILES =
+H_FILES =
+MAN1PODS =
+MAN3PODS = Constants.pm
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR = $(INST_LIB)/Pod
+INST_ARCHLIBDIR = $(INST_ARCHLIB)/Pod
+
+INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC =
+INST_DYNAMIC =
+INST_BOOT =
+
+# Extra linker info
+EXPORT_LIST =
+PERL_ARCHIVE =
+PERL_ARCHIVE_AFTER =
+
+
+TO_INST_PM = Constants.pm
+
+PM_TO_BLIB = Constants.pm \
+ $(INST_LIB)/Pod/Constants.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 6.98
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' --
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(TRUE)
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
+FALSE = false
+TRUE = true
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
+DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
+UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
+MACROSTART =
+MACROEND =
+USEMAKEFILE = -f
+FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
+CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' --
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt : all
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip --best
+SUFFIX = .gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = Pod-Constants
+DISTVNAME = Pod-Constants-0.17
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+ LINKTYPE="$(LINKTYPE)"\
+ LD="$(LD)"\
+ PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+ $(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+ $(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+ $(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+ $(NOECHO) $(NOOP)
+
+help :
+ perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+ $(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+ $(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_LIBDIR)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
+ $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
+ $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_AUTODIR)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
+ $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_BIN)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
+ $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_SCRIPT)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
+ $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+ $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+ $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
+ $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(BOOTSTRAP) $(INST_DYNAMIC)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all \
+ Constants.pm
+ $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) \
+ Constants.pm $(INST_MAN3DIR)/Pod::Constants.$(MAN3EXT)
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+ - $(RM_F) \
+ $(BASEEXT).bso $(BASEEXT).def \
+ $(BASEEXT).exp $(BASEEXT).x \
+ $(BOOTSTRAP) $(INST_ARCHAUTODIR)/extralibs.all \
+ $(INST_ARCHAUTODIR)/extralibs.ld $(MAKE_APERL_FILE) \
+ *$(LIB_EXT) *$(OBJ_EXT) \
+ *perl.core MYMETA.json \
+ MYMETA.yml blibdirs.ts \
+ core core.*perl.*.? \
+ core.[0-9] core.[0-9][0-9] \
+ core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] \
+ core.[0-9][0-9][0-9][0-9][0-9] lib$(BASEEXT).def \
+ mon.out perl \
+ perl$(EXE_EXT) perl.exe \
+ perlmain.c pm_to_blib \
+ pm_to_blib.ts so_locations \
+ tmon.out
+ - $(RM_RF) \
+ blib
+ $(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+ - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge :: clean realclean_subdirs
+ - $(RM_F) \
+ $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+ - $(RM_RF) \
+ $(DISTVNAME)
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+ $(NOECHO) $(ECHO) Generating META.yml
+ $(NOECHO) $(ECHO) '---' > META_new.yml
+ $(NOECHO) $(ECHO) 'abstract: '\''Include constants from POD'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) 'author:' >> META_new.yml
+ $(NOECHO) $(ECHO) ' - '\''Sam Vilain <sam@vilain.net>'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
+ $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
+ $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml
+ $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml
+ $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
+ $(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
+ $(NOECHO) $(ECHO) ' version: '\''1.4'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) 'name: Pod-Constants' >> META_new.yml
+ $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
+ $(NOECHO) $(ECHO) ' directory:' >> META_new.yml
+ $(NOECHO) $(ECHO) ' - t' >> META_new.yml
+ $(NOECHO) $(ECHO) ' - inc' >> META_new.yml
+ $(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+ $(NOECHO) $(ECHO) ' Pod::Parser: '\''1.13'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) ' Test::Simple: '\''0.18'\''' >> META_new.yml
+ $(NOECHO) $(ECHO) 'version: 0.17' >> META_new.yml
+ -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+ $(NOECHO) $(ECHO) Generating META.json
+ $(NOECHO) $(ECHO) '{' > META_new.json
+ $(NOECHO) $(ECHO) ' "abstract" : "Include constants from POD",' >> META_new.json
+ $(NOECHO) $(ECHO) ' "author" : [' >> META_new.json
+ $(NOECHO) $(ECHO) ' "Sam Vilain <sam@vilain.net>"' >> META_new.json
+ $(NOECHO) $(ECHO) ' ],' >> META_new.json
+ $(NOECHO) $(ECHO) ' "dynamic_config" : 1,' >> META_new.json
+ $(NOECHO) $(ECHO) ' "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690",' >> META_new.json
+ $(NOECHO) $(ECHO) ' "license" : [' >> META_new.json
+ $(NOECHO) $(ECHO) ' "unknown"' >> META_new.json
+ $(NOECHO) $(ECHO) ' ],' >> META_new.json
+ $(NOECHO) $(ECHO) ' "meta-spec" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json
+ $(NOECHO) $(ECHO) ' "version" : "2"' >> META_new.json
+ $(NOECHO) $(ECHO) ' },' >> META_new.json
+ $(NOECHO) $(ECHO) ' "name" : "Pod-Constants",' >> META_new.json
+ $(NOECHO) $(ECHO) ' "no_index" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "directory" : [' >> META_new.json
+ $(NOECHO) $(ECHO) ' "t",' >> META_new.json
+ $(NOECHO) $(ECHO) ' "inc"' >> META_new.json
+ $(NOECHO) $(ECHO) ' ]' >> META_new.json
+ $(NOECHO) $(ECHO) ' },' >> META_new.json
+ $(NOECHO) $(ECHO) ' "prereqs" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "build" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json
+ $(NOECHO) $(ECHO) ' }' >> META_new.json
+ $(NOECHO) $(ECHO) ' },' >> META_new.json
+ $(NOECHO) $(ECHO) ' "configure" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json
+ $(NOECHO) $(ECHO) ' }' >> META_new.json
+ $(NOECHO) $(ECHO) ' },' >> META_new.json
+ $(NOECHO) $(ECHO) ' "runtime" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json
+ $(NOECHO) $(ECHO) ' "Pod::Parser" : "1.13",' >> META_new.json
+ $(NOECHO) $(ECHO) ' "Test::Simple" : "0.18"' >> META_new.json
+ $(NOECHO) $(ECHO) ' }' >> META_new.json
+ $(NOECHO) $(ECHO) ' }' >> META_new.json
+ $(NOECHO) $(ECHO) ' },' >> META_new.json
+ $(NOECHO) $(ECHO) ' "release_status" : "stable",' >> META_new.json
+ $(NOECHO) $(ECHO) ' "version" : 0.17' >> META_new.json
+ $(NOECHO) $(ECHO) '}' >> META_new.json
+ -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json
+
+
+# --- MakeMaker signature section:
+signature :
+ cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+ $(NOECHO) $(NOOP)
+
+distcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+ $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+ $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+ $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+ $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+ -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' --
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+ $(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+ uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+ $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)_uu'
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+ $(PREOP)
+ $(TO_UNIX)
+ $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(COMPRESS) $(DISTVNAME).tar
+ $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)'
+ $(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+ $(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+ $(PREOP)
+ $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+ $(RM_RF) $(DISTVNAME)
+ $(NOECHO) $(ECHO) 'Created $(DISTVNAME).zip'
+ $(POSTOP)
+
+shdist : distdir
+ $(PREOP)
+ $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+ $(RM_RF) $(DISTVNAME)
+ $(NOECHO) $(ECHO) 'Created $(DISTVNAME).shar'
+ $(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+ $(RM_RF) $(DISTVNAME)
+ $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta
+ $(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+ cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
+ cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+ cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+ $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+ -e "@all = keys %{ maniread() };" \
+ -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+ -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \
+ -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \
+ -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' --
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \
+ -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \
+ -e ' or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' --
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+ $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }' \
+ -e ' or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' --
+ $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+ cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: pure_install doc_install
+ $(NOECHO) $(NOOP)
+
+install_perl :: pure_perl_install doc_perl_install
+ $(NOECHO) $(NOOP)
+
+install_site :: pure_site_install doc_site_install
+ $(NOECHO) $(NOOP)
+
+install_vendor :: pure_vendor_install doc_vendor_install
+ $(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+ $(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+ $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install :: all
+ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+ $(INST_BIN) $(DESTINSTALLBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install :: all
+ $(NOECHO) umask 02; $(MOD_INSTALL) \
+ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+ write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+ $(INST_LIB) $(DESTINSTALLSITELIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+ $(INST_BIN) $(DESTINSTALLSITEBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+ $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install :: all
+ $(NOECHO) umask 022; $(MOD_INSTALL) \
+ $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+ $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+ $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \
+ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+
+doc_perl_install :: all
+
+doc_site_install :: all
+ $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
+ -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
+ -$(NOECHO) umask 02; $(DOC_INSTALL) \
+ "Module" "$(NAME)" \
+ "installed into" "$(INSTALLSITELIB)" \
+ LINKTYPE "$(LINKTYPE)" \
+ VERSION "$(VERSION)" \
+ EXE_FILES "$(EXE_FILES)" \
+ >> $(DESTINSTALLSITEARCH)/perllocal.pod
+
+doc_vendor_install :: all
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+ $(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+
+uninstall_from_sitedirs ::
+ $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE :
+ $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+ $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+ $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+ -$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+ -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+ - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+ $(PERLRUN) Makefile.PL
+ $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+ $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <=="
+ $(FALSE)
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET = perl
+FULLPERL = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+ $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+ $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+ $(NOECHO) $(PERLRUNINST) \
+ Makefile.PL DIR= \
+ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES = t/*.t
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE) subdirs-test
+
+subdirs-test ::
+ $(NOECHO) $(NOOP)
+
+
+test_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_dynamic :: pure_all
+ PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd :
+ $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="$(VERSION)">' > $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ABSTRACT>Include constants from POD</ABSTRACT>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <AUTHOR>Sam Vilain <sam@vilain.net></AUTHOR>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <REQUIRE VERSION="1.13" NAME="Pod::Parser" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <REQUIRE NAME="Test::Simple" VERSION="0.18" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="x86_64-linux-gnu-thread-multi-5.20" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
+ $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
+ $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
+ Constants.pm $(INST_LIB)/Pod/Constants.pm
+ $(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
--- /dev/null
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+ 'NAME' => 'Pod::Constants',
+ 'VERSION_FROM' => "Constants.pm",
+ 'PREREQ_PM' => { Pod::Parser => 1.13,
+ Test::Simple => 0.18,
+ },
+ ABSTRACT_FROM => 'Constants.pm',
+ AUTHOR => 'Sam Vilain <sam@vilain.net>',
+);
--- /dev/null
+Pod::Constants version 0.16
+===========================
+
+Pod::Constants allows you to extract data from your POD at run-time,
+meaning you can do things like declare constants in POD and not have
+to update two places at once every time you make a change.
+
+This version adds the ability to read structured data from POD
+sections, as well as insert arbitrary hooks into the extraction of
+data.
+
+INSTALLATION
+
+To install this module type the following:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+DEPENDENCIES
+
+Pod::Parser, 1.13 or better. That is to say, I haven't tested it on
+any earlier version.
+
+Running the test suite requires Test::Simple 0.18.
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2001, 2002, 2007 Sam Vilain. All Rights Reserved.
+This module is free software. It may be used, redistributed and/or
+modified under the terms of the Perl Artistic License, version 2 or
+later, OR the terms of the GNU General Public License, v3 or later.
--- /dev/null
+This file contains message digests of all files listed in MANIFEST,
+signed via the Module::Signature module, version 0.73.
+
+To verify the content in this distribution, first make sure you have
+Module::Signature installed, then type:
+
+ % cpansign -v
+
+It will check each file's integrity, as well as the signature's
+validity. If "==> Signature verified OK! <==" is not displayed,
+the distribution may already have been compromised, and you should
+not run its Makefile.PL or Build.PL.
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+SHA1 462ba3a97544419ef19a0ea770300ed111eeeba3 Changes
+SHA1 69c4899914bdef7e92ad568aa01883ba1ab2bf58 Constants.pm
+SHA1 8fe42bbbf49d63ca2c0f03092e70220385fb897d MANIFEST
+SHA1 46f261f87b59a79434df649883373911429e5ced MYMETA.json
+SHA1 254d2755ec3959e54e0bce688baafaa6dabcf8d8 MYMETA.yml
+SHA1 696ff0eab7cae5fea0e33f902a961e0891307367 Makefile
+SHA1 e5ee3c348310734ef4e800795869396a90237ac7 Makefile.PL
+SHA1 3299bac2292bb848bee61e7fed224c13e2d15240 README
+SHA1 bfbb159569bad05ca423c73a626624212b9e2f0e t/01-constants.t
+SHA1 a1795e821b9607c33d6bb9c617d6f3121504550b t/Cheese.pm
+SHA1 4abb4ccd5bf0f555e66d6252e245338935f28c74 t/ReEntrancyTest.pm
+SHA1 cb75bb83def475000d3fb72f702a36b5669f7632 t/cheese.pl
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAEBCgAGBQJU/yW5AAoJEBdtaL3wGtIoUhYH/iuVKM/8qfwFN1liNQk5GJvJ
+Zwd6J8rPVjQRr8EPITMHc1iOWyC3znwcCNrwpkdEcGgJOROVzUWJGUZurlAHoPhU
+1Q1gVnjQzJasON5aucZjDHQ4g4i/96qbumSgrOoFQw9dqMlOMM3z37oqphfR8Tt5
+ZKYJb47pE/jU8Z8QTBOjJPgw2CNRumzcfNRW+pKTeA/R6ivLXtiOKLgbbyIC4Vqn
+liALcIb9IJhmMaKh4+IOVu+5bvjvgtb2Uv+nTYfptBnuaeeglRW6JhDUXDXtyzLG
+2ByImhDcMBOVNu/RsePwW6Gcl7asWLueRQ+8twwMxSIHtPW65NpLxw/uX7imiPI=
+=jmeQ
+-----END PGP SIGNATURE-----
--- /dev/null
+#!/usr/bin/perl -w
+
+use strict;
+use Test::More tests => 20;
+use Data::Dumper;
+
+use vars qw($section_1 $section_2 $section_3 $section_4 %options);
+
+use_ok(
+ "Pod::Constants",
+ section_1 => \$section_1,
+ -trim => 1,
+ section_2 => \$section_2,
+ section_3 => sub { tr/[a-z]/[A-Z]/; $section_3 = $_ },
+ section_4 => sub { eval },
+ 'command line parameters' => sub {
+ &Pod::Constants::add_hook
+ (
+ #-trim => 0,
+ '*item' => sub {
+ my ($options, $description) =
+ m/^(.*?)\n\n(.*)/s;
+ my (@options, $longest);
+ $longest = "";
+ for my $option
+ ($options =~ m/\G((?:-\w|--\w+))(?:,\s*)?/g) {
+ push @options, $option;
+ if ( length $option > length $longest) {
+ $longest = $option;
+ }
+ }
+ $longest =~ s/^-*//;
+ $options{$longest} =
+ {
+ options => \@options,
+ description => $description,
+ };
+ }
+ )
+ },
+ );
+
+# try as hard as we can to get the path to perl
+ok($Pod::Constants::VERSION,
+ "Pod::Constants sets its own VERSION");
+
+BEGIN {
+ push @INC, "t";
+};
+# to avoid a warning
+if ( 0 ) { $Cheese::foo = $ReEntrancyTest::wohoo = $Cheese::quux; }
+eval "use Cheese";
+
+is($section_1, "Down with Pants!\n\n", "no trim from main");
+is($section_2, "42", "with trim from main");
+is($section_3, "CLANK_EST", "sub");
+is($section_4, "touche", "eval");
+is($Cheese::foo, "detcepxe", "From module");
+is($ReEntrancyTest::wohoo, "Re-entrancy works!", "From module");
+is($Cheese::quux, "Blah.", "From module(2)");
+like(`$^X -c t/Cheese.pm 2>&1`, qr/syntax OK/, "perl -c module");
+like(`$^X -c t/cheese.pl 2>&1`, qr/syntax OK/, "perl -c script");
+
+# test the examples on the man page :)
+package Pod::Constants;
+Pod::Constants->import (SYNOPSIS => sub {
+ $main::section_1 = join "\n", map { s/^ //; $_ } split /\n/, $_
+});
+
+package main;
+open NEWPKG, ">t/TestManPage.pm" or die $!;
+# why define your test results when you can read them in from POD?
+$section_1 =~ s/myhash\)/myhash %myhash2)/;
+$section_1 =~ s/myhash;/myhash, "%myhash\'s value after the above:" => sub { %myhash2 = eval };/;
+print NEWPKG "package TestManPage;\n$section_1\n2.818;\n";
+close NEWPKG;
+
+use_ok("TestManPage");
+
+is($TestManPage::myvar, 'This string will be loaded into $myvar',
+ "man page example 1");
+is($TestManPage::VERSION, $Pod::Constants::VERSION,
+ "man page example 2");
+ok($TestManPage::VERSION,
+ "man page example 2 cross-check");
+is($TestManPage::myarray[2], 'For example, this is $myarray[2].',
+ "man page example 3");
+my $ok = 0;
+while (my ($k, $v) = each %TestManPage::myhash) {
+ if (exists $TestManPage::myhash2{$k}) { $ok ++ };
+ if ($v eq $TestManPage::myhash2{$k}) { $ok ++ };
+}
+is($ok, 4,
+ "man page example 4");
+is(scalar keys %TestManPage::myhash, 2,
+ "man page example 4 cross-check");
+is($TestManPage::html, '<p>This text will be in $html</p>',
+ "man page example 5");
+# supress warnings
+$TestManPage::myvar = $TestManPage::html = undef;
+@TestManPage::myarray = ();
+
+is($options{foo}->{options}->[0], "-f", "Pod::Constants::add_hook");
+
+=head2 section_1
+
+Down with Pants!
+
+=head2 section_2
+
+42
+
+=head2 section_3
+
+clank_est
+
+=head2 section_4
+
+$section_4 = "touche"
+
+=cut
+
+=head1 command line parameters
+
+the following command line parameters are supported
+
+=item -f, --foo
+
+This does something cool.
+
+=item -h, --help
+
+This also does something pretty cool.
+
+=cut
--- /dev/null
+package Cheese;
+
+use strict;
+
+use vars qw($foo $quux);
+use Pod::Constants -debug => 1, -trim => 1,
+ foo => \$foo,
+ bar => sub { print "GOT HERE\n"; eval "use ReEntrancyTest";
+ print "GOT HERE TOO. \$\@ is `$@'\n"; },
+ quux => \$quux,
+;
+
+=head1 foo
+
+detcepxe
+
+=head1 bar
+
+=head2 quux
+
+Blah.
+
+=cut
+
+1;
--- /dev/null
+
+package ReEntrancyTest;
+
+use strict;
+use vars qw($wohoo $foo);
+
+use Pod::Constants -debug => 1, -trim => 1, foobar => \$wohoo;
+
+=head1 foobar
+
+Re-entrancy works!
+
+=cut
+
+1;
--- /dev/null
+
+use strict;
+
+use vars qw($foo);
+use Pod::Constants -trim => 1, foo => \$foo;
+
+=head1 foo
+
+detcepxe
+
+=cut
+
+1;