The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 010
LICENSE 1315
MANIFEST 13
META.json 3968
META.yml 2933
Makefile.PL 4872
README 813
dist.ini 34
lib/Bot/Training/Plugin.pm 53
lib/Bot/Training.pm 159
t/00-compile.t 3368
t/lib/Bot/Training/Test.pm 11
t/release-pod-syntax.t 43
13 files changed (This is a version diff) 199302
@@ -1,5 +1,15 @@
 Revision history for Bot::Training
 
+0.06 2015-01-08 15:15:12
+
+    - Fixed "Can't modify split in chomp" error (See http://www.cpantesters.org/cpan/report/6e341b28-9675-11e4-a3f3-4fad3a6893cb).
+    - Added Dist::Zilla::Plugin::MinimumPerl to fix errors in Perl versions < 5.10
+    - Renamed MooseX::Getopt _getopt_full_usage to print_usage_text, see https://rt.cpan.org/Ticket/Display.html?id=82278
+
+0.05 2015-01-07 13:55:58
+
+    - Removed deprecated dependencies: Any::Moose and Class::MOP::load_class
+
 0.04 2010-05-12 03:41:15
 
     - Remove X::Types use and depend on Moose/Mouse
@@ -1,4 +1,4 @@
-This software is copyright (c) 2010 by Ævar Arnfjörð Bjarmason.
+This software is copyright (c) 2015 by Ævar Arnfjörð Bjarmason.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -12,21 +12,22 @@ b) the "Artistic License"
 
 --- The GNU General Public License, Version 1, February 1989 ---
 
-This software is Copyright (c) 2010 by Ævar Arnfjörð Bjarmason.
+This software is Copyright (c) 2015 by Ævar Arnfjörð Bjarmason.
 
 This is free software, licensed under:
 
   The GNU General Public License, Version 1, February 1989
 
-		    GNU GENERAL PUBLIC LICENSE
-		     Version 1, February 1989
+                    GNU GENERAL PUBLIC LICENSE
+                     Version 1, February 1989
 
  Copyright (C) 1989 Free Software Foundation, Inc.
-                59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+ 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
-			    Preamble
+                            Preamble
 
   The license agreements of most software companies try to keep users
 at the mercy of those companies.  By contrast, our General Public
@@ -67,7 +68,7 @@ authors' reputations.
   The precise terms and conditions for copying, distribution and
 modification follow.
 
-		    GNU GENERAL PUBLIC LICENSE
+                    GNU GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
   0. This License Agreement applies to any program or other work which
@@ -185,7 +186,7 @@ make exceptions for this.  Our decision will be guided by the two goals
 of preserving the free status of all derivatives of our free software and
 of promoting the sharing and reuse of software generally.
 
-			    NO WARRANTY
+                            NO WARRANTY
 
   9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
@@ -207,9 +208,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.
 
-		     END OF TERMS AND CONDITIONS
+                     END OF TERMS AND CONDITIONS
 
-	Appendix: How to Apply These Terms to Your New Programs
+        Appendix: How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
 possible use to humanity, the best way to achieve this is to make it
@@ -235,8 +236,9 @@ the exclusion of warranty; and each file should have at least the
     GNU General Public License for more details.
 
     You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software Foundation,
-    Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA  02110-1301 USA
+
 
 Also add information on how to contact you by electronic and paper mail.
 
@@ -270,7 +272,7 @@ That's all there is to it!
 
 --- The Artistic License 1.0 ---
 
-This software is Copyright (c) 2010 by Ævar Arnfjörð Bjarmason.
+This software is Copyright (c) 2015 by Ævar Arnfjörð Bjarmason.
 
 This is free software, licensed under:
 
@@ -1,8 +1,10 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.029.
 Changes
 LICENSE
 MANIFEST
 META.json
 META.yml
+Makefile.PL
 README
 bin/bot-training
 dist.ini
@@ -12,4 +14,4 @@ t/00-compile.t
 t/bot-training.t
 t/lib/Bot/Training/Test.pm
 t/lib/auto/Bot/Training/Test/test.trn
-t/release-pod-syntax.t
\ No newline at end of file
+t/release-pod-syntax.t
@@ -1,22 +1,16 @@
 {
    "abstract" : "Plain text training material for bots like L<Hailo> and L<AI::MegaHAL>",
    "author" : [
-      "\u00c3\u0086var Arnfj\u00c3\u00b6r\u00c3\u00b0 Bjarmason <avar@cpan.org>"
+      "Ævar Arnfjörð Bjarmason <avar@cpan.org>"
+   ],
+   "dynamic_config" : 0,
+   "generated_by" : "Dist::Zilla version 5.029, CPAN::Meta::Converter version 2.143240",
+   "license" : [
+      "perl_5"
    ],
-   "build_requires" : {
-      "File::Find" : "0",
-      "File::Slurp" : "0",
-      "File::Temp" : "0",
-      "Test::More" : "0"
-   },
-   "configure_requires" : {
-      "ExtUtils::MakeMaker" : "6.31"
-   },
-   "generated_by" : "Dist::Zilla version 2.101290",
-   "license" : "perl",
    "meta-spec" : {
-      "url" : "http://module-build.sourceforge.net/META-spec-v1.4.html",
-      "version" : 1.4
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : 2
    },
    "name" : "Bot-Training",
    "no_index" : {
@@ -24,33 +18,68 @@
          "t"
       ]
    },
-   "recommends" : {},
-   "requires" : {
-      "Any::Moose" : "0",
-      "Class::MOP" : "0",
-      "Dir::Self" : "0",
-      "Encode" : "0",
-      "File::ShareDir" : "0",
-      "File::Spec::Functions" : "0",
-      "List::Util" : "0",
-      "Module::Pluggable" : "0",
-      "Moose" : "0",
-      "MooseX::Getopt::Dashes" : "0",
-      "Mouse" : "0",
-      "MouseX::Getopt::Dashes" : "0",
-      "Pod::Usage" : "0",
-      "autodie" : "0",
-      "namespace::clean" : "0",
-      "open" : "0",
-      "perl" : "5.010"
+   "prereqs" : {
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0",
+            "perl" : "5.010"
+         }
+      },
+      "develop" : {
+         "requires" : {
+            "Test::Pod" : "1.41"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "Any::Moose" : "0",
+            "Class::Load" : "0",
+            "Dir::Self" : "0",
+            "Encode" : "0",
+            "File::ShareDir" : "0",
+            "File::Spec::Functions" : "0",
+            "List::Util" : "0",
+            "Module::Pluggable" : "0",
+            "Moose" : "0",
+            "MooseX::Getopt::Dashes" : "0",
+            "Pod::Usage" : "0",
+            "autodie" : "0",
+            "namespace::clean" : "0",
+            "open" : "0",
+            "perl" : "5.010",
+            "strict" : "0",
+            "warnings" : "0"
+         }
+      },
+      "test" : {
+         "requires" : {
+            "File::Slurp" : "0",
+            "File::Spec" : "0",
+            "IO::Handle" : "0",
+            "IPC::Open3" : "0",
+            "Test::More" : "0",
+            "lib" : "0",
+            "perl" : "5.010"
+         }
+      }
    },
+   "release_status" : "stable",
    "resources" : {
-      "Ratings" : "http://cpanratings.perl.org/d/Bot-Training",
-      "bugtracker" : "https://rt.cpan.org/Public/Dist/Display.html?Name=Bot-Training",
-      "homepage" : "http://search.cpan.org/dist/Bot-Training/",
-      "license" : "http://dev.perl.org/licenses/",
-      "repository" : "http://github.com/avar/bot-training"
+      "bugtracker" : {
+         "mailto" : "bug-Bot-Training@rt.cpan.org",
+         "web" : "https://rt.cpan.org/Public/Dist/Display.html?Name=Bot-Training"
+      },
+      "homepage" : "http://metacpan.org/release/Bot-Training",
+      "license" : [
+         "http://dev.perl.org/licenses/"
+      ],
+      "repository" : {
+         "type" : "git",
+         "url" : "git://github.com/avar/bot-training.git",
+         "web" : "http://github.com/avar/bot-training"
+      }
    },
-   "version" : "0.04"
+   "version" : "0.06",
+   "x_authority" : "cpan:AVAR"
 }
 
@@ -3,44 +3,48 @@ abstract: 'Plain text training material for bots like L<Hailo> and L<AI::MegaHAL
 author:
   - 'Ævar Arnfjörð Bjarmason <avar@cpan.org>'
 build_requires:
-  File::Find: 0
-  File::Slurp: 0
-  File::Temp: 0
-  Test::More: 0
+  File::Slurp: '0'
+  File::Spec: '0'
+  IO::Handle: '0'
+  IPC::Open3: '0'
+  Test::More: '0'
+  lib: '0'
+  perl: '5.010'
 configure_requires:
-  ExtUtils::MakeMaker: 6.31
-generated_by: 'Dist::Zilla version 2.101290'
+  ExtUtils::MakeMaker: '0'
+  perl: '5.010'
+dynamic_config: 0
+generated_by: 'Dist::Zilla version 5.029, CPAN::Meta::Converter version 2.143240'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: Bot-Training
 no_index:
   directory:
     - t
-recommends: {}
 requires:
-  Any::Moose: 0
-  Class::MOP: 0
-  Dir::Self: 0
-  Encode: 0
-  File::ShareDir: 0
-  File::Spec::Functions: 0
-  List::Util: 0
-  Module::Pluggable: 0
-  Moose: 0
-  MooseX::Getopt::Dashes: 0
-  Mouse: 0
-  MouseX::Getopt::Dashes: 0
-  Pod::Usage: 0
-  autodie: 0
-  namespace::clean: 0
-  open: 0
-  perl: 5.010
+  Any::Moose: '0'
+  Class::Load: '0'
+  Dir::Self: '0'
+  Encode: '0'
+  File::ShareDir: '0'
+  File::Spec::Functions: '0'
+  List::Util: '0'
+  Module::Pluggable: '0'
+  Moose: '0'
+  MooseX::Getopt::Dashes: '0'
+  Pod::Usage: '0'
+  autodie: '0'
+  namespace::clean: '0'
+  open: '0'
+  perl: '5.010'
+  strict: '0'
+  warnings: '0'
 resources:
-  Ratings: http://cpanratings.perl.org/d/Bot-Training
   bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=Bot-Training
-  homepage: http://search.cpan.org/dist/Bot-Training/
+  homepage: http://metacpan.org/release/Bot-Training
   license: http://dev.perl.org/licenses/
-  repository: http://github.com/avar/bot-training
-version: 0.04
+  repository: git://github.com/avar/bot-training.git
+version: '0.06'
+x_authority: cpan:AVAR
@@ -1,67 +1,91 @@
 
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.029.
 use strict;
 use warnings;
 
- BEGIN { require 5.010; } 
+use 5.010;
 
-use ExtUtils::MakeMaker 6.31;
+use ExtUtils::MakeMaker;
 
 
 
 my %WriteMakefileArgs = (
-  'ABSTRACT' => 'Plain text training material for bots like L<Hailo> and L<AI::MegaHAL>',
-  'AUTHOR' => 'Ævar Arnfjörð Bjarmason <avar@cpan.org>',
-  'BUILD_REQUIRES' => {
-    'File::Find' => '0',
-    'File::Slurp' => '0',
-    'File::Temp' => '0',
-    'Test::More' => '0'
+  "ABSTRACT" => "Plain text training material for bots like L<Hailo> and L<AI::MegaHAL>",
+  "AUTHOR" => "\x{c6}var Arnfj\x{f6}r\x{f0} Bjarmason <avar\@cpan.org>",
+  "CONFIGURE_REQUIRES" => {
+    "ExtUtils::MakeMaker" => 0
   },
-  'CONFIGURE_REQUIRES' => {
-    'ExtUtils::MakeMaker' => '6.31'
-  },
-  'DISTNAME' => 'Bot-Training',
-  'EXE_FILES' => [
-    'bin/bot-training'
+  "DISTNAME" => "Bot-Training",
+  "EXE_FILES" => [
+    "bin/bot-training"
   ],
-  'LICENSE' => 'perl',
-  'NAME' => 'Bot::Training',
-  'PREREQ_PM' => {
-    'Any::Moose' => '0',
-    'Class::MOP' => '0',
-    'Dir::Self' => '0',
-    'Encode' => '0',
-    'File::ShareDir' => '0',
-    'File::Spec::Functions' => '0',
-    'List::Util' => '0',
-    'Module::Pluggable' => '0',
-    'Moose' => '0',
-    'MooseX::Getopt::Dashes' => '0',
-    'Mouse' => '0',
-    'MouseX::Getopt::Dashes' => '0',
-    'Pod::Usage' => '0',
-    'autodie' => '0',
-    'namespace::clean' => '0',
-    'open' => '0'
+  "LICENSE" => "perl",
+  "MIN_PERL_VERSION" => "5.010",
+  "NAME" => "Bot::Training",
+  "PREREQ_PM" => {
+    "Any::Moose" => 0,
+    "Class::Load" => 0,
+    "Dir::Self" => 0,
+    "Encode" => 0,
+    "File::ShareDir" => 0,
+    "File::Spec::Functions" => 0,
+    "List::Util" => 0,
+    "Module::Pluggable" => 0,
+    "Moose" => 0,
+    "MooseX::Getopt::Dashes" => 0,
+    "Pod::Usage" => 0,
+    "autodie" => 0,
+    "namespace::clean" => 0,
+    "open" => 0,
+    "strict" => 0,
+    "warnings" => 0
+  },
+  "TEST_REQUIRES" => {
+    "File::Slurp" => 0,
+    "File::Spec" => 0,
+    "IO::Handle" => 0,
+    "IPC::Open3" => 0,
+    "Test::More" => 0,
+    "lib" => 0
   },
-  'VERSION' => '0.04',
-  'test' => {
-    'TESTS' => 't/*.t'
+  "VERSION" => "0.06",
+  "test" => {
+    "TESTS" => "t/*.t"
   }
 );
 
 
-unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
-  my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
-  my $pp = $WriteMakefileArgs{PREREQ_PM}; 
-  for my $mod ( keys %$br ) {
-    if ( exists $pp->{$mod} ) {
-      $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod}; 
-    }
-    else {
-      $pp->{$mod} = $br->{$mod};
-    }
-  }
+my %FallbackPrereqs = (
+  "Any::Moose" => 0,
+  "Class::Load" => 0,
+  "Dir::Self" => 0,
+  "Encode" => 0,
+  "ExtUtils::MakeMaker" => 0,
+  "File::ShareDir" => 0,
+  "File::Slurp" => 0,
+  "File::Spec" => 0,
+  "File::Spec::Functions" => 0,
+  "IO::Handle" => 0,
+  "IPC::Open3" => 0,
+  "List::Util" => 0,
+  "Module::Pluggable" => 0,
+  "Moose" => 0,
+  "MooseX::Getopt::Dashes" => 0,
+  "Pod::Usage" => 0,
+  "Test::More" => 0,
+  "autodie" => 0,
+  "lib" => 0,
+  "namespace::clean" => 0,
+  "open" => 0,
+  "strict" => 0,
+  "warnings" => 0
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+  delete $WriteMakefileArgs{TEST_REQUIRES};
+  delete $WriteMakefileArgs{BUILD_REQUIRES};
+  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
 }
 
 delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
@@ -1,38 +1,43 @@
 NAME
+
     Bot::Training - Plain text training material for bots like Hailo and
     AI::MegaHAL
 
 SYNOPSIS
+
         use Bot::Training;
         use File::Slurp qw< slurp >;
-
+    
         my $bt = Bot::Training->new;
-
+    
         # Plugins I know about. Install Task::Bot::Training for more:
         my @plugins = $bt->plugins
-
+    
         # Get the plugin object of a .trn file (which is just a plain text
         # file). These all work just as well:
         my $hal = $bt->file('megahal');
         my $hal = $bt->file('MegaHAL');
         my $hal = $bt->file('Bot::Training::MegaHAL');
-
+    
         # Get all lines in the file with File::Slurp:
         my @test = split /\n/, slurp($hal->file);
 
 DESCRIPTION
+
     Markov bots like Hailo and AI::MegaHAL are fun. But to get them working
-    you either need to train them on existing training material or make your
-    own.
+    you either need to train them on existing training material or make
+    your own.
 
     This module provides a pluggable way to install already existing
-    training files via the CPAN. It also comes with a command-line interface
-    called "bot-training".
+    training files via the CPAN. It also comes with a command-line
+    interface called bot-training.
 
 AUTHOR
+
     Ævar Arnfjörð Bjarmason <avar@cpan.org>
 
 LICENSE AND COPYRIGHT
+
     Copyright 2010 Ævar Arnfjörð Bjarmason <avar@cpan.org>
 
     This program is free software, you can redistribute it and/or modify it
@@ -3,12 +3,13 @@ author           = Ævar Arnfjörð Bjarmason <avar@cpan.org>
 copyright_holder = Ævar Arnfjörð Bjarmason
 license          = Perl_5
 
+[MinimumPerl]
+
 [@AVAR]
 dist = Bot-Training
 bugtracker = rt
 
-[Prereq]
-Mouse = 0
+[Prereqs]
 Moose = 0
 MooseX::Getopt::Dashes = 0
-MouseX::Getopt::Dashes = 0
+
@@ -1,10 +1,8 @@
 package Bot::Training::Plugin;
-BEGIN {
-  $Bot::Training::Plugin::VERSION = '0.04';
-}
-
+our $AUTHORITY = 'cpan:AVAR';
+$Bot::Training::Plugin::VERSION = '0.06';
 use 5.010;
-use Any::Moose;
+use Moose;
 use File::ShareDir qw< :ALL >;
 use File::Spec::Functions qw< catdir catfile >;
 use namespace::clean -except => 'meta';
@@ -1,11 +1,10 @@
 package Bot::Training;
-BEGIN {
-  $Bot::Training::VERSION = '0.04';
-}
-
+our $AUTHORITY = 'cpan:AVAR';
+$Bot::Training::VERSION = '0.06';
 use 5.010;
 use autodie qw(open close);
-use Any::Moose;
+use Class::Load;
+use Moose;
 use Module::Pluggable (
     search_path => [ 'Bot::Training' ],
     except      => [ 'Bot::Training::Plugin' ],
@@ -13,7 +12,7 @@ use Module::Pluggable (
 use List::Util qw< first >;
 use namespace::clean -except => [ qw< meta plugins > ];
 
-with any_moose('X::Getopt::Dashes');
+with 'MooseX::Getopt::Dashes';
 
 has help => (
     traits        => [ qw/ Getopt / ],
@@ -71,13 +70,7 @@ sub _new_class {
         }
     }
 
-    if (Any::Moose::moose_is_preferred()) {
-        require Class::MOP;
-        eval { Class::MOP::load_class($pkg) };
-    } else {
-        eval qq[require $pkg];
-    }
-    die $@ if $@;
+    Class::Load::load_class($pkg);
 
     return $pkg->new;
 }
@@ -125,7 +118,7 @@ sub run {
 sub _getopt_spec_exception { goto &_getopt_full_usage }
 
 # --help
-sub _getopt_full_usage {
+sub print_usage_text {
     my ($self, $usage, $plain_str) = @_;
 
     # If called from _getopt_spec_exception we get "Unknown option: foo"
@@ -136,7 +129,8 @@ sub _getopt_full_usage {
         my $out = $plain_str // $usage->text;
 
         # The default getopt order sucks, use reverse sort order
-        chomp(my @out = split /^/, $out);
+        my @out = split /^/, $out;
+        chomp @out;
         my $opt = join "\n", sort { $b cmp $a } @out[1 .. $#out];
         ($out[0], $opt);
     };
@@ -1,44 +1,79 @@
-#!perl
-
+use 5.006;
 use strict;
 use warnings;
 
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.051
+
 use Test::More;
-use File::Find;
-use File::Temp qw{ tempdir };
-
-my @modules;
-find(
-  sub {
-    return if $File::Find::name !~ /\.pm\z/;
-    my $found = $File::Find::name;
-    $found =~ s{^lib/}{};
-    $found =~ s{[/\\]}{::}g;
-    $found =~ s/\.pm$//;
-    # nothing to skip
-    push @modules, $found;
-  },
-  'lib',
+
+plan tests => 3 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
+
+my @module_files = (
+    'Bot/Training.pm',
+    'Bot/Training/Plugin.pm'
+);
+
+my @scripts = (
+    'bin/bot-training'
 );
 
-my @scripts = glob "bin/*";
+# no fake home requested
 
-plan tests => scalar(@modules) + scalar(@scripts);
+my $inc_switch = -d 'blib' ? '-Mblib' : '-Ilib';
 
+use File::Spec;
+use IPC::Open3;
+use IO::Handle;
+
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+
+my @warnings;
+for my $lib (@module_files)
 {
-    # fake home for cpan-testers
-    # no fake requested ## local $ENV{HOME} = tempdir( CLEANUP => 1 );
-
-    is( qx{ $^X -Ilib -e "use $_; print '$_ ok'" }, "$_ ok", "$_ loaded ok" )
-        for sort @modules;
-
-    SKIP: {
-        eval "use Test::Script; 1;";
-        skip "Test::Script needed to test script compilation", scalar(@scripts) if $@;
-        foreach my $file ( @scripts ) {
-            my $script = $file;
-            $script =~ s!.*/!!;
-            script_compiles_ok( $file, "$script script compiles" );
-        }
+    # see L<perlfaq8/How can I capture STDERR from an external command?>
+    my $stderr = IO::Handle->new;
+
+    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
+    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+    my @_warnings = <$stderr>;
+    waitpid($pid, 0);
+    is($?, 0, "$lib loaded ok");
+
+    if (@_warnings)
+    {
+        warn @_warnings;
+        push @warnings, @_warnings;
     }
 }
+
+foreach my $file (@scripts)
+{ SKIP: {
+    open my $fh, '<', $file or warn("Unable to open $file: $!"), next;
+    my $line = <$fh>;
+
+    close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!\s*(?:\S*perl\S*)((?:\s+-\w*)*)(?:\s*#.*)?$/;
+    my @flags = $1 ? split(' ', $1) : ();
+
+    my $stderr = IO::Handle->new;
+
+    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, @flags, '-c', $file);
+    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+    my @_warnings = <$stderr>;
+    waitpid($pid, 0);
+    is($?, 0, "$file compiled ok");
+
+   # in older perls, -c output is simply the file portion of the path being tested
+    if (@_warnings = grep { !/\bsyntax OK$/ }
+        grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings)
+    {
+        warn @_warnings;
+        push @warnings, @_warnings;
+    }
+} }
+
+
+
+is(scalar(@warnings), 0, 'no warnings found')
+    or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING};
+
+
@@ -1,7 +1,7 @@
 package Bot::Training::Test;
 
 use 5.010;
-use Any::Moose;
+use Moose;
 
 extends 'Bot::Training::Plugin';
 
@@ -7,9 +7,8 @@ BEGIN {
   }
 }
 
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
 use Test::More;
+use Test::Pod 1.41;
 
-eval "use Test::Pod 1.41";
-plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
-
-all_pod_files_ok();
\ No newline at end of file
+all_pod_files_ok();