Import version 0.17 from CPAN
authorMarius Gavrilescu <marius@ieval.ro>
Fri, 17 Jul 2015 10:14:48 +0000 (13:14 +0300)
committerMarius Gavrilescu <marius@ieval.ro>
Fri, 17 Jul 2015 10:14:48 +0000 (13:14 +0300)
15 files changed:
Changes [new file with mode: 0644]
Constants.pm [new file with mode: 0644]
MANIFEST [new file with mode: 0644]
META.json [new file with mode: 0644]
META.yml [new file with mode: 0644]
MYMETA.json [new file with mode: 0644]
MYMETA.yml [new file with mode: 0644]
Makefile [new file with mode: 0644]
Makefile.PL [new file with mode: 0644]
README [new file with mode: 0644]
SIGNATURE [new file with mode: 0644]
t/01-constants.t [new file with mode: 0644]
t/Cheese.pm [new file with mode: 0644]
t/ReEntrancyTest.pm [new file with mode: 0644]
t/cheese.pl [new file with mode: 0644]

diff --git a/Changes b/Changes
new file mode 100644 (file)
index 0000000..d1c12de
--- /dev/null
+++ b/Changes
@@ -0,0 +1,36 @@
+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.
diff --git a/Constants.pm b/Constants.pm
new file mode 100644 (file)
index 0000000..4a3363a
--- /dev/null
@@ -0,0 +1,518 @@
+# 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;
diff --git a/MANIFEST b/MANIFEST
new file mode 100644 (file)
index 0000000..a817cf4
--- /dev/null
+++ b/MANIFEST
@@ -0,0 +1,15 @@
+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)
diff --git a/META.json b/META.json
new file mode 100644 (file)
index 0000000..0159720
--- /dev/null
+++ b/META.json
@@ -0,0 +1,42 @@
+{
+   "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
+}
diff --git a/META.yml b/META.yml
new file mode 100644 (file)
index 0000000..8d28376
--- /dev/null
+++ b/META.yml
@@ -0,0 +1,23 @@
+---
+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
diff --git a/MYMETA.json b/MYMETA.json
new file mode 100644 (file)
index 0000000..9ee51a9
--- /dev/null
@@ -0,0 +1,42 @@
+{
+   "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
+}
diff --git a/MYMETA.yml b/MYMETA.yml
new file mode 100644 (file)
index 0000000..8e9f1f4
--- /dev/null
@@ -0,0 +1,23 @@
+---
+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
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..c67a548
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,850 @@
+# 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 &lt;sam@vilain.net&gt;</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.
diff --git a/Makefile.PL b/Makefile.PL
new file mode 100644 (file)
index 0000000..d9ab6a0
--- /dev/null
@@ -0,0 +1,11 @@
+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>',
+);
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..c1680e4
--- /dev/null
+++ b/README
@@ -0,0 +1,33 @@
+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.
diff --git a/SIGNATURE b/SIGNATURE
new file mode 100644 (file)
index 0000000..25579bc
--- /dev/null
+++ b/SIGNATURE
@@ -0,0 +1,39 @@
+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-----
diff --git a/t/01-constants.t b/t/01-constants.t
new file mode 100644 (file)
index 0000000..dfe8cf6
--- /dev/null
@@ -0,0 +1,135 @@
+#!/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
diff --git a/t/Cheese.pm b/t/Cheese.pm
new file mode 100644 (file)
index 0000000..db18104
--- /dev/null
@@ -0,0 +1,25 @@
+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;
diff --git a/t/ReEntrancyTest.pm b/t/ReEntrancyTest.pm
new file mode 100644 (file)
index 0000000..e6fc08b
--- /dev/null
@@ -0,0 +1,15 @@
+
+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;
diff --git a/t/cheese.pl b/t/cheese.pl
new file mode 100644 (file)
index 0000000..11393f4
--- /dev/null
@@ -0,0 +1,13 @@
+
+use strict;
+
+use vars qw($foo);
+use Pod::Constants -trim => 1, foo => \$foo;
+
+=head1 foo
+
+detcepxe
+
+=cut
+
+1;
This page took 0.037215 seconds and 4 git commands to generate.