Hello community, here is the log from the commit of package perl-Eval-Closure for openSUSE:Factory checked in at 2013-08-05 20:49:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Eval-Closure (Old) and /work/SRC/openSUSE:Factory/.perl-Eval-Closure.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Eval-Closure" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Eval-Closure/perl-Eval-Closure.changes 2013-03-22 12:05:58.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.perl-Eval-Closure.new/perl-Eval-Closure.changes 2013-08-05 20:49:59.000000000 +0200 @@ -1,0 +2,16 @@ +Wed Jul 31 14:12:15 UTC 2013 - co...@suse.com + +- updated to 0.11 + - add "alias => 1" option for making closure variables actually alias the + closed over variables (so the variable referenced in the environment + hashref will actually be updated by changes made in the closure). (Toby + Inkster, #3) + +------------------------------------------------------------------- +Sat Jul 27 11:58:36 UTC 2013 - co...@suse.com + +- updated to 0.10 + - fix pod links + - support lexical subs on 5.18+ + +------------------------------------------------------------------- Old: ---- Eval-Closure-0.08.tar.gz New: ---- Eval-Closure-0.11.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Eval-Closure.spec ++++++ --- /var/tmp/diff_new_pack.3HIG3I/_old 2013-08-05 20:50:00.000000000 +0200 +++ /var/tmp/diff_new_pack.3HIG3I/_new 2013-08-05 20:50:00.000000000 +0200 @@ -17,11 +17,11 @@ Name: perl-Eval-Closure -Version: 0.08 +Version: 0.11 Release: 0 %define cpan_name Eval-Closure Summary: Safely and cleanly create closures via string eval -License: GPL-1.0+ or Artistic-1.0 +License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/Eval-Closure/ Source: http://www.cpan.org/authors/id/D/DO/DOY/%{cpan_name}-%{version}.tar.gz @@ -29,13 +29,15 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros -BuildRequires: perl(Sub::Exporter) BuildRequires: perl(Test::Fatal) BuildRequires: perl(Test::More) >= 0.88 BuildRequires: perl(Test::Requires) BuildRequires: perl(Try::Tiny) -Requires: perl(Sub::Exporter) +#BuildRequires: perl(Devel::LexAlias) +#BuildRequires: perl(Eval::Closure) +#BuildRequires: perl(Perl::Tidy) Requires: perl(Try::Tiny) +Recommends: perl(Devel::LexAlias) >= 0.05 Recommends: perl(Perl::Tidy) %{perl_requires} @@ -45,16 +47,12 @@ constructors, which speeds code up at runtime by a significant amount. String eval is not without its issues however - it's difficult to control the scope it's used in (which determines which variables are in scope -inside the eval), and it can be quite slow, especially if doing a large -number of evals. +inside the eval), and it's easy to miss compilation errors, since eval +catches them and sticks them in $@ instead. -This module attempts to solve both of those problems. It provides an -'eval_closure' function, which evals a string in a clean environment, other -than a fixed list of specified variables. It also caches the result of the -eval, so that doing repeated evals of the same source, even with a -different environment, will be much faster (but note that the description -is part of the string to be evaled, so it must also be the same (or -non-existent) if caching is to work properly). +This module attempts to solve these problems. It provides an 'eval_closure' +function, which evals a string in a clean environment, other than a fixed +list of specified variables. Compilation errors are rethrown automatically. %prep %setup -q -n %{cpan_name}-%{version} @@ -79,6 +77,6 @@ %files -f %{name}.files %defattr(-,root,root,755) -%doc Changes LICENSE README weaver.ini +%doc Changes LICENSE README %changelog ++++++ Eval-Closure-0.08.tar.gz -> Eval-Closure-0.11.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/Changes new/Eval-Closure-0.11/Changes --- old/Eval-Closure-0.08/Changes 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/Changes 2013-07-30 22:30:51.000000000 +0200 @@ -1,5 +1,17 @@ Revision history for Eval-Closure +0.11 2013-07-30 + - add "alias => 1" option for making closure variables actually alias the + closed over variables (so the variable referenced in the environment + hashref will actually be updated by changes made in the closure). (Toby + Inkster, #3) + +0.10 2013-07-10 + - fix pod links + +0.09 2013-07-10 + - support lexical subs on 5.18+ + 0.08 2012-02-09 - Remove a double layer of string eval that was introduced in 0.07 as an intermediate step in figuring out the unique package thing - it's not diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/LICENSE new/Eval-Closure-0.11/LICENSE --- old/Eval-Closure-0.08/LICENSE 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/LICENSE 2013-07-30 22:30:51.000000000 +0200 @@ -1,4 +1,4 @@ -This software is copyright (c) 2012 by Jesse Luehrs. +This software is copyright (c) 2013 by Jesse Luehrs. 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,7 +12,7 @@ --- The GNU General Public License, Version 1, February 1989 --- -This software is Copyright (c) 2012 by Jesse Luehrs. +This software is Copyright (c) 2013 by Jesse Luehrs. This is free software, licensed under: @@ -22,7 +22,7 @@ Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + 51 Franklin St, Suite 500, Boston, MA 02110-1335 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -272,7 +272,7 @@ --- The Artistic License 1.0 --- -This software is Copyright (c) 2012 by Jesse Luehrs. +This software is Copyright (c) 2013 by Jesse Luehrs. This is free software, licensed under: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/MANIFEST new/Eval-Closure-0.11/MANIFEST --- old/Eval-Closure-0.08/MANIFEST 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/MANIFEST 2013-07-30 22:30:51.000000000 +0200 @@ -10,14 +10,15 @@ t/00-compile.t t/basic.t t/canonicalize-source.t +t/close-over-nonref.t t/close-over.t t/compiling-package.t t/debugger.t t/description.t t/errors.t +t/lexical-subs.t t/memoize.t -t/release-eol.t -t/release-no-tabs.t -t/release-pod-coverage.t -t/release-pod-syntax.t -weaver.ini +xt/release/eol.t +xt/release/no-tabs.t +xt/release/pod-coverage.t +xt/release/pod-syntax.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/META.json new/Eval-Closure-0.11/META.json --- old/Eval-Closure-0.08/META.json 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/META.json 2013-07-30 22:30:51.000000000 +0200 @@ -1,10 +1,10 @@ { "abstract" : "safely and cleanly create closures via string eval", "author" : [ - "Jesse Luehrs <doy at tozt dot net>" + "Jesse Luehrs <d...@tozt.net>" ], "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 4.300006, CPAN::Meta::Converter version 2.113640", + "generated_by" : "Dist::Zilla version 4.300034, CPAN::Meta::Converter version 2.120921", "license" : [ "perl_5" ], @@ -19,34 +19,57 @@ "ExtUtils::MakeMaker" : "6.30" } }, + "develop" : { + "requires" : { + "Pod::Coverage::TrustPod" : "0", + "Test::Pod" : "1.41", + "Test::Pod::Coverage" : "1.08" + } + }, "runtime" : { "recommends" : { - "Perl::Tidy" : 0 + "Devel::LexAlias" : "0.05", + "Perl::Tidy" : "0" }, "requires" : { - "Scalar::Util" : 0, - "Sub::Exporter" : 0, - "Try::Tiny" : 0 + "Carp" : "0", + "Exporter" : "0", + "Scalar::Util" : "0", + "Try::Tiny" : "0", + "constant" : "0", + "overload" : "0", + "strict" : "0", + "warnings" : "0" } }, "test" : { "requires" : { - "Test::Fatal" : 0, + "B" : "0", + "File::Find" : "0", + "File::Temp" : "0", + "Test::Fatal" : "0", "Test::More" : "0.88", - "Test::Requires" : 0 + "Test::Requires" : "0" } } }, "release_status" : "stable", "resources" : { + "bugtracker" : { + "web" : "https://github.com/doy/eval-closure/issues" + }, + "homepage" : "http://metacpan.org/release/Eval-Closure", "repository" : { "type" : "git", "url" : "git://github.com/doy/eval-closure.git", - "web" : "http://github.com/doy/eval-closure" + "web" : "https://github.com/doy/eval-closure" } }, - "version" : "0.08", + "version" : "0.11", "x_Dist_Zilla" : { + "perl" : { + "version" : "5.018000" + }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Prereqs", @@ -57,107 +80,112 @@ } }, "name" : "@DOY/TestMoreDoneTesting", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::GatherDir", "name" : "@DOY/GatherDir", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@DOY/PruneCruft", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@DOY/ManifestSkip", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@DOY/MetaYAML", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@DOY/License", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@DOY/Readme", - "version" : "4.300006" + "version" : "4.300034" }, { - "class" : "Dist::Zilla::Plugin::ExtraTests", - "name" : "@DOY/ExtraTests", - "version" : "4.300006" + "class" : "Dist::Zilla::Plugin::RunExtraTests", + "name" : "@DOY/RunExtraTests", + "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@DOY/ExecDir", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@DOY/ShareDir", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "name" : "@DOY/MakeMaker", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@DOY/Manifest", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@DOY/TestRelease", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@DOY/ConfirmRelease", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@DOY/MetaConfig", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@DOY/MetaJSON", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@DOY/NextRelease", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", "name" : "@DOY/CheckChangesHasContent", - "version" : "0.003" + "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@DOY/PkgVersion", - "version" : "4.300006" + "version" : "4.300034" + }, + { + "class" : "Dist::Zilla::Plugin::Authority", + "name" : "@DOY/Authority", + "version" : "1.006" }, { "class" : "Dist::Zilla::Plugin::PodCoverageTests", "name" : "@DOY/PodCoverageTests", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@DOY/PodSyntaxTests", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::NoTabsTests", @@ -170,29 +198,39 @@ "version" : "0.02" }, { - "class" : "Dist::Zilla::Plugin::CompileTests", - "name" : "@DOY/CompileTests", - "version" : "1.112400" + "class" : "Dist::Zilla::Plugin::Test::Compile", + "name" : "@DOY/Test::Compile", + "version" : "2.002" }, { - "class" : "Dist::Zilla::Plugin::Repository", - "name" : "@DOY/Repository", - "version" : "0.18" + "class" : "Dist::Zilla::Plugin::Metadata", + "name" : "@DOY/Metadata", + "version" : "3.03" + }, + { + "class" : "Dist::Zilla::Plugin::MetaResources", + "name" : "@DOY/MetaResources", + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "name" : "@DOY/Git::Check", - "version" : "1.112440" + "version" : "2.013" + }, + { + "class" : "Dist::Zilla::Plugin::Git::Commit", + "name" : "@DOY/Git::Commit", + "version" : "2.013" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "name" : "@DOY/Git::Tag", - "version" : "1.112440" + "version" : "2.013" }, { "class" : "Dist::Zilla::Plugin::Git::NextVersion", "name" : "@DOY/Git::NextVersion", - "version" : "1.112440" + "version" : "2.013" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", @@ -202,29 +240,12 @@ { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@DOY/UploadToCPAN", - "version" : "4.300006" - }, - { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "runtime", - "type" : "requires" - } - }, - "name" : "Prereqs", - "version" : "4.300006" + "version" : "4.300034" }, { - "class" : "Dist::Zilla::Plugin::Prereqs", - "config" : { - "Dist::Zilla::Plugin::Prereqs" : { - "phase" : "test", - "type" : "requires" - } - }, - "name" : "TestRequires", - "version" : "4.300006" + "class" : "Dist::Zilla::Plugin::AutoPrereqs", + "name" : "AutoPrereqs", + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::Prereqs", @@ -235,37 +256,42 @@ } }, "name" : "RuntimeRecommends", - "version" : "4.300006" + "version" : "4.300034" + }, + { + "class" : "Dist::Zilla::Plugin::ContributorsFromGit", + "name" : "ContributorsFromGit", + "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", - "version" : "4.300006" + "version" : "4.300034" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", - "version" : "4.300006" + "version" : "4.300034" } ], "zilla" : { @@ -273,8 +299,14 @@ "config" : { "is_trial" : "0" }, - "version" : "4.300006" + "version" : "4.300034" } - } + }, + "x_authority" : "cpan:DOY", + "x_contributors" : [ + "Dave Rolsky <auta...@urth.org>", + "Shawn M Moore <sar...@bestpractical.com>", + "Toby Inkster <m...@tobyinkster.co.uk>" + ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/META.yml new/Eval-Closure-0.11/META.yml --- old/Eval-Closure-0.08/META.yml 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/META.yml 2013-07-30 22:30:51.000000000 +0200 @@ -1,30 +1,43 @@ --- abstract: 'safely and cleanly create closures via string eval' author: - - 'Jesse Luehrs <doy at tozt dot net>' + - 'Jesse Luehrs <d...@tozt.net>' build_requires: + B: 0 + File::Find: 0 + File::Temp: 0 Test::Fatal: 0 Test::More: 0.88 Test::Requires: 0 configure_requires: ExtUtils::MakeMaker: 6.30 dynamic_config: 0 -generated_by: 'Dist::Zilla version 4.300006, CPAN::Meta::Converter version 2.113640' +generated_by: 'Dist::Zilla version 4.300034, CPAN::Meta::Converter version 2.120921' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Eval-Closure recommends: + Devel::LexAlias: 0.05 Perl::Tidy: 0 requires: + Carp: 0 + Exporter: 0 Scalar::Util: 0 - Sub::Exporter: 0 Try::Tiny: 0 + constant: 0 + overload: 0 + strict: 0 + warnings: 0 resources: + bugtracker: https://github.com/doy/eval-closure/issues + homepage: http://metacpan.org/release/Eval-Closure repository: git://github.com/doy/eval-closure.git -version: 0.08 +version: 0.11 x_Dist_Zilla: + perl: + version: 5.018000 plugins: - class: Dist::Zilla::Plugin::Prereqs @@ -33,87 +46,91 @@ phase: test type: requires name: '@DOY/TestMoreDoneTesting' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::GatherDir name: '@DOY/GatherDir' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::PruneCruft name: '@DOY/PruneCruft' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::ManifestSkip name: '@DOY/ManifestSkip' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::MetaYAML name: '@DOY/MetaYAML' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::License name: '@DOY/License' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::Readme name: '@DOY/Readme' - version: 4.300006 + version: 4.300034 - - class: Dist::Zilla::Plugin::ExtraTests - name: '@DOY/ExtraTests' - version: 4.300006 + class: Dist::Zilla::Plugin::RunExtraTests + name: '@DOY/RunExtraTests' + version: 0.011 - class: Dist::Zilla::Plugin::ExecDir name: '@DOY/ExecDir' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::ShareDir name: '@DOY/ShareDir' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::MakeMaker name: '@DOY/MakeMaker' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::Manifest name: '@DOY/Manifest' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::TestRelease name: '@DOY/TestRelease' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::ConfirmRelease name: '@DOY/ConfirmRelease' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::MetaConfig name: '@DOY/MetaConfig' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::MetaJSON name: '@DOY/MetaJSON' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::NextRelease name: '@DOY/NextRelease' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::CheckChangesHasContent name: '@DOY/CheckChangesHasContent' - version: 0.003 + version: 0.006 - class: Dist::Zilla::Plugin::PkgVersion name: '@DOY/PkgVersion' - version: 4.300006 + version: 4.300034 + - + class: Dist::Zilla::Plugin::Authority + name: '@DOY/Authority' + version: 1.006 - class: Dist::Zilla::Plugin::PodCoverageTests name: '@DOY/PodCoverageTests' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@DOY/PodSyntaxTests' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::NoTabsTests name: '@DOY/NoTabsTests' @@ -123,25 +140,33 @@ name: '@DOY/EOLTests' version: 0.02 - - class: Dist::Zilla::Plugin::CompileTests - name: '@DOY/CompileTests' - version: 1.112400 - - - class: Dist::Zilla::Plugin::Repository - name: '@DOY/Repository' - version: 0.18 + class: Dist::Zilla::Plugin::Test::Compile + name: '@DOY/Test::Compile' + version: 2.002 + - + class: Dist::Zilla::Plugin::Metadata + name: '@DOY/Metadata' + version: 3.03 + - + class: Dist::Zilla::Plugin::MetaResources + name: '@DOY/MetaResources' + version: 4.300034 - class: Dist::Zilla::Plugin::Git::Check name: '@DOY/Git::Check' - version: 1.112440 + version: 2.013 + - + class: Dist::Zilla::Plugin::Git::Commit + name: '@DOY/Git::Commit' + version: 2.013 - class: Dist::Zilla::Plugin::Git::Tag name: '@DOY/Git::Tag' - version: 1.112440 + version: 2.013 - class: Dist::Zilla::Plugin::Git::NextVersion name: '@DOY/Git::NextVersion' - version: 1.112440 + version: 2.013 - class: Dist::Zilla::Plugin::PodWeaver name: '@DOY/PodWeaver' @@ -149,23 +174,11 @@ - class: Dist::Zilla::Plugin::UploadToCPAN name: '@DOY/UploadToCPAN' - version: 4.300006 - - - class: Dist::Zilla::Plugin::Prereqs - config: - Dist::Zilla::Plugin::Prereqs: - phase: runtime - type: requires - name: Prereqs - version: 4.300006 + version: 4.300034 - - class: Dist::Zilla::Plugin::Prereqs - config: - Dist::Zilla::Plugin::Prereqs: - phase: test - type: requires - name: TestRequires - version: 4.300006 + class: Dist::Zilla::Plugin::AutoPrereqs + name: AutoPrereqs + version: 4.300034 - class: Dist::Zilla::Plugin::Prereqs config: @@ -173,33 +186,42 @@ phase: runtime type: recommends name: RuntimeRecommends - version: 4.300006 + version: 4.300034 + - + class: Dist::Zilla::Plugin::ContributorsFromGit + name: ContributorsFromGit + version: 0.006 - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' - version: 4.300006 + version: 4.300034 - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' - version: 4.300006 + version: 4.300034 zilla: class: Dist::Zilla::Dist::Builder config: is_trial: 0 - version: 4.300006 + version: 4.300034 +x_authority: cpan:DOY +x_contributors: + - 'Dave Rolsky <auta...@urth.org>' + - 'Shawn M Moore <sar...@bestpractical.com>' + - 'Toby Inkster <m...@tobyinkster.co.uk>' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/Makefile.PL new/Eval-Closure-0.11/Makefile.PL --- old/Eval-Closure-0.08/Makefile.PL 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/Makefile.PL 2013-07-30 22:30:51.000000000 +0200 @@ -10,12 +10,8 @@ my %WriteMakefileArgs = ( "ABSTRACT" => "safely and cleanly create closures via string eval", - "AUTHOR" => "Jesse Luehrs <doy at tozt dot net>", - "BUILD_REQUIRES" => { - "Test::Fatal" => 0, - "Test::More" => "0.88", - "Test::Requires" => 0 - }, + "AUTHOR" => "Jesse Luehrs <doy\@tozt.net>", + "BUILD_REQUIRES" => {}, "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => "6.30" }, @@ -24,17 +20,43 @@ "LICENSE" => "perl", "NAME" => "Eval::Closure", "PREREQ_PM" => { + "Carp" => 0, + "Exporter" => 0, "Scalar::Util" => 0, - "Sub::Exporter" => 0, - "Try::Tiny" => 0 + "Try::Tiny" => 0, + "constant" => 0, + "overload" => 0, + "strict" => 0, + "warnings" => 0 + }, + "TEST_REQUIRES" => { + "B" => 0, + "File::Find" => 0, + "File::Temp" => 0, + "Test::Fatal" => 0, + "Test::More" => "0.88", + "Test::Requires" => 0 }, - "VERSION" => "0.08", + "VERSION" => "0.11", "test" => { "TESTS" => "t/*.t" } ); +unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { + my $tr = delete $WriteMakefileArgs{TEST_REQUIRES}; + my $br = $WriteMakefileArgs{BUILD_REQUIRES}; + for my $mod ( keys %$tr ) { + if ( exists $br->{$mod} ) { + $br->{$mod} = $tr->{$mod} if $tr->{$mod} > $br->{$mod}; + } + else { + $br->{$mod} = $tr->{$mod}; + } + } +} + unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) { my $br = delete $WriteMakefileArgs{BUILD_REQUIRES}; my $pp = $WriteMakefileArgs{PREREQ_PM}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/README new/Eval-Closure-0.11/README --- old/Eval-Closure-0.08/README 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/README 2013-07-30 22:30:51.000000000 +0200 @@ -1,11 +1,11 @@ This archive contains the distribution Eval-Closure, -version 0.08: +version 0.11: safely and cleanly create closures via string eval -This software is copyright (c) 2012 by Jesse Luehrs. +This software is copyright (c) 2013 by Jesse Luehrs. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/dist.ini new/Eval-Closure-0.11/dist.ini --- old/Eval-Closure-0.08/dist.ini 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/dist.ini 2013-07-30 22:30:51.000000000 +0200 @@ -1,20 +1,22 @@ name = Eval-Closure -author = Jesse Luehrs <doy at tozt dot net> +author = Jesse Luehrs <d...@tozt.net> license = Perl_5 copyright_holder = Jesse Luehrs [@DOY] +:version = 0.11 dist = Eval-Closure +repository = github +bugtracker_web = https://github.com/doy/eval-closure/issues +bugtracker_mailto = -[Prereqs] -Scalar::Util = 0 -Sub::Exporter = 0 -Try::Tiny = 0 - -[Prereqs / TestRequires] -Test::Fatal = 0 -Test::More = 0.88 -Test::Requires = 0 +[AutoPrereqs] +skip = ^Perl::Tidy$ +skip = ^perl$ +skip = ^Devel::LexAlias$ [Prereqs / RuntimeRecommends] Perl::Tidy = 0 +Devel::LexAlias = 0.05 + +[ContributorsFromGit] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/lib/Eval/Closure.pm new/Eval-Closure-0.11/lib/Eval/Closure.pm --- old/Eval-Closure-0.08/lib/Eval/Closure.pm 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/lib/Eval/Closure.pm 2013-07-30 22:30:51.000000000 +0200 @@ -1,25 +1,32 @@ package Eval::Closure; +BEGIN { + $Eval::Closure::AUTHORITY = 'cpan:DOY'; +} { - $Eval::Closure::VERSION = '0.08'; + $Eval::Closure::VERSION = '0.11'; } use strict; use warnings; -use Sub::Exporter -setup => { - exports => [qw(eval_closure)], - groups => { default => [qw(eval_closure)] }, -}; # ABSTRACT: safely and cleanly create closures via string eval +use Exporter 'import'; +@Eval::Closure::EXPORT = @Eval::Closure::EXPORT_OK = 'eval_closure'; + use Carp; use overload (); use Scalar::Util qw(reftype); use Try::Tiny; +use constant HAS_LEXICAL_SUBS => $] >= 5.018; + sub eval_closure { my (%args) = @_; + # default to copying environment + $args{alias} = 0 if !exists $args{alias}; + $args{source} = _canonicalize_source($args{source}); _validate_env($args{environment} ||= {}); @@ -27,7 +34,7 @@ . $args{source} if defined $args{description} && !($^P & 0x10); - my ($code, $e) = _clean_eval_closure(@args{qw(source environment)}); + my ($code, $e) = _clean_eval_closure(@args{qw(source environment alias)}); if (!$code) { if ($args{terse_error}) { @@ -74,8 +81,14 @@ unless reftype($env) eq 'HASH'; for my $var (keys %$env) { - croak("Environment key '$var' should start with \@, \%, or \$") - unless $var =~ /^([\@\%\$])/; + if (HAS_LEXICAL_SUBS) { + croak("Environment key '$var' should start with \@, \%, \$, or \&") + unless $var =~ /^([\@\%\$\&])/; + } + else { + croak("Environment key '$var' should start with \@, \%, or \$") + unless $var =~ /^([\@\%\$])/; + } croak("Environment values must be references, not $env->{$var}") unless ref($env->{$var}); } @@ -90,15 +103,15 @@ } sub _clean_eval_closure { - my ($source, $captures) = @_; + my ($source, $captures, $alias) = @_; my @capture_keys = sort keys %$captures; if ($ENV{EVAL_CLOSURE_PRINT_SOURCE}) { - _dump_source(_make_compiler_source($source, @capture_keys)); + _dump_source(_make_compiler_source($source, $alias, @capture_keys)); } - my ($compiler, $e) = _make_compiler($source, @capture_keys); + my ($compiler, $e) = _make_compiler($source, $alias, @capture_keys); my $code; if (defined $compiler) { $code = $compiler->(@$captures{@capture_keys}); @@ -110,6 +123,12 @@ undef $code; } + if ($alias) { + require Devel::LexAlias; + Devel::LexAlias::lexalias($code, $_, $captures->{$_}) + for grep !/^\&/, keys %$captures; + } + return ($code, $e); } @@ -130,20 +149,37 @@ $Eval::Closure::SANDBOX_ID = 0; sub _make_compiler_source { - my ($source, @capture_keys) = @_; + my ($source, $alias, @capture_keys) = @_; $Eval::Closure::SANDBOX_ID++; my $i = 0; return join "\n", ( "package Eval::Closure::Sandbox_$Eval::Closure::SANDBOX_ID;", 'sub {', - (map { - 'my ' . $_ . ' = ' . substr($_, 0, 1) . '{$_[' . $i++ . ']};' - } @capture_keys), - $source, + (map { _make_lexical_assignment($_, $i++, $alias) } @capture_keys), + $source, '}', ); } +sub _make_lexical_assignment { + my ($key, $index, $alias) = @_; + my $sigil = substr($key, 0, 1); + my $name = substr($key, 1); + if (HAS_LEXICAL_SUBS && $sigil eq '&') { + my $tmpname = '$__' . $name . '__' . $index; + return 'use feature "lexical_subs"; ' + . 'no warnings "experimental::lexical_subs"; ' + . 'my ' . $tmpname . ' = $_[' . $index . ']; ' + . 'my sub ' . $name . ' { goto ' . $tmpname . ' }'; + } + if ($alias) { + return 'my ' . $key . ';'; + } + else { + return 'my ' . $key . ' = ' . $sigil . '{$_[' . $index . ']};'; + } +} + sub _dump_source { my ($source) = @_; @@ -166,6 +202,7 @@ 1; __END__ + =pod =head1 NAME @@ -174,7 +211,7 @@ =head1 VERSION -version 0.08 +version 0.11 =head1 SYNOPSIS @@ -233,6 +270,20 @@ this is used to allow the generated function to access externally defined variables (so you would pass in a reference to a variable that already exists). +In perl 5.18 and greater, the environment hash can contain variables with a +sigil of C<&>. This will create a lexical sub in the evaluated code (see +L<feature/The 'lexical_subs' feature>). Using a C<&> sigil on perl versions +before lexical subs were available will throw an error. + +=item alias + +If set to true, the coderef returned closes over the variables referenced in +the environment hashref. (This feature requires L<Devel::LexAlias>.) If set to +false, the coderef closes over a I<< shallow copy >> of the variables. + +If this argument is omitted, Eval::Closure will currently assume false, but +this assumption may change in a future version. + =item description This lets you provide a bit more information in backtraces. Normally, when a @@ -260,9 +311,18 @@ No known bugs. -Please report any bugs through RT: email -C<bug-eval-closure at rt.cpan.org>, or browse to -L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Eval-Closure>. +Please report any bugs to GitHub Issues at +L<https://github.com/doy/eval-closure/issues>. + +=head1 SEE ALSO + +=over 4 + +=item * L<Class::MOP::Method::Accessor> + +This module is a factoring out of code that used to live here + +=back =head1 SUPPORT @@ -274,47 +334,38 @@ =over 4 -=item * AnnoCPAN: Annotated CPAN documentation +=item * MetaCPAN -L<http://annocpan.org/dist/Eval-Closure> +L<https://metacpan.org/release/Eval-Closure> -=item * CPAN Ratings +=item * Github -L<http://cpanratings.perl.org/d/Eval-Closure> +L<https://github.com/doy/eval-closure> =item * RT: CPAN's request tracker L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Eval-Closure> -=item * Search CPAN +=item * CPAN Ratings -L<http://search.cpan.org/dist/Eval-Closure> +L<http://cpanratings.perl.org/d/Eval-Closure> =back -=head1 AUTHOR - -Jesse Luehrs <doy at tozt dot net> +=head1 NOTES Based on code from L<Class::MOP::Method::Accessor>, by Stevan Little and the Moose Cabal. -=head1 SEE ALSO - -=over 4 - -=item * L<Class::MOP::Method::Accessor> +=head1 AUTHOR -This module is a factoring out of code that used to live here - -=back +Jesse Luehrs <d...@tozt.net> =head1 COPYRIGHT AND LICENSE -This software is copyright (c) 2012 by Jesse Luehrs. +This software is copyright (c) 2013 by Jesse Luehrs. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/00-compile.t new/Eval-Closure-0.11/t/00-compile.t --- old/Eval-Closure-0.08/t/00-compile.t 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/t/00-compile.t 2013-07-30 22:30:51.000000000 +0200 @@ -24,8 +24,10 @@ 'lib', ); -my @scripts; -if ( -d 'bin' ) { +sub _find_scripts { + my $dir = shift @_; + + my @found_scripts = (); find( sub { return unless -f; @@ -37,12 +39,18 @@ }; my $shebang = <$FH>; return unless $shebang =~ /^#!.*?\bperl\b\s*$/; - push @scripts, $found; + push @found_scripts, $found; }, - 'bin', + $dir, ); + + return @found_scripts; } +my @scripts; +do { push @scripts, _find_scripts($_) if -d $_ } + for qw{ bin script scripts }; + my $plan = scalar(@modules) + scalar(@scripts); $plan ? (plan tests => $plan) : (plan skip_all => "no tests to run"); @@ -62,4 +70,5 @@ script_compiles( $file, "$script script compiles" ); } } + } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/close-over-nonref.t new/Eval-Closure-0.11/t/close-over-nonref.t --- old/Eval-Closure-0.08/t/close-over-nonref.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Eval-Closure-0.11/t/close-over-nonref.t 2013-07-30 22:30:51.000000000 +0200 @@ -0,0 +1,20 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Test::Requires { "Devel::LexAlias" => "0.05" }; + +use Eval::Closure; + +my $number = 40; +my $closure = eval_closure( + source => 'sub { $xxx += 2 }', + environment => { '$xxx' => \$number }, + alias => 1, +); + +$closure->(); + +is($number, 42); + +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/errors.t new/Eval-Closure-0.11/t/errors.t --- old/Eval-Closure-0.08/t/errors.t 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/t/errors.t 2013-07-30 22:30:51.000000000 +0200 @@ -31,7 +31,7 @@ environment => { 'foo' => \1 }, ) }, - qr/should start with \@, \%, or \$/, + qr/should start with \@, \%,/, "error from malformed env" ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/lexical-subs.t new/Eval-Closure-0.11/t/lexical-subs.t --- old/Eval-Closure-0.08/t/lexical-subs.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Eval-Closure-0.11/t/lexical-subs.t 2013-07-30 22:30:51.000000000 +0200 @@ -0,0 +1,22 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; + +use Test::Requires '5.018'; +use 5.018; + +use Eval::Closure; + +my $sub = eval_closure( + source => 'sub { foo() }', + environment => { + '&foo' => sub { state $i++ }, + } +); + +is($sub->(), 0); +is($sub->(), 1); +is($sub->(), 2); + +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/release-eol.t new/Eval-Closure-0.11/t/release-eol.t --- old/Eval-Closure-0.08/t/release-eol.t 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/t/release-eol.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ - -BEGIN { - unless ($ENV{RELEASE_TESTING}) { - require Test::More; - Test::More::plan(skip_all => 'these tests are for release candidate testing'); - } -} - -use strict; -use warnings; -use Test::More; - -eval 'use Test::EOL'; -plan skip_all => 'Test::EOL required' if $@; - -all_perl_files_ok({ trailing_whitespace => 1 }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/release-no-tabs.t new/Eval-Closure-0.11/t/release-no-tabs.t --- old/Eval-Closure-0.08/t/release-no-tabs.t 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/t/release-no-tabs.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ - -BEGIN { - unless ($ENV{RELEASE_TESTING}) { - require Test::More; - Test::More::plan(skip_all => 'these tests are for release candidate testing'); - } -} - -use strict; -use warnings; -use Test::More; - -eval 'use Test::NoTabs'; -plan skip_all => 'Test::NoTabs required' if $@; - -all_perl_files_ok(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/release-pod-coverage.t new/Eval-Closure-0.11/t/release-pod-coverage.t --- old/Eval-Closure-0.08/t/release-pod-coverage.t 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/t/release-pod-coverage.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,21 +0,0 @@ -#!perl - -BEGIN { - unless ($ENV{RELEASE_TESTING}) { - require Test::More; - Test::More::plan(skip_all => 'these tests are for release candidate testing'); - } -} - - -use Test::More; - -eval "use Test::Pod::Coverage 1.08"; -plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage" - if $@; - -eval "use Pod::Coverage::TrustPod"; -plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage" - if $@; - -all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/t/release-pod-syntax.t new/Eval-Closure-0.11/t/release-pod-syntax.t --- old/Eval-Closure-0.08/t/release-pod-syntax.t 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/t/release-pod-syntax.t 1970-01-01 01:00:00.000000000 +0100 @@ -1,15 +0,0 @@ -#!perl - -BEGIN { - unless ($ENV{RELEASE_TESTING}) { - require Test::More; - Test::More::plan(skip_all => 'these tests are for release candidate testing'); - } -} - -use Test::More; - -eval "use Test::Pod 1.41"; -plan skip_all => "Test::Pod 1.41 required for testing POD" if $@; - -all_pod_files_ok(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/weaver.ini new/Eval-Closure-0.11/weaver.ini --- old/Eval-Closure-0.08/weaver.ini 2012-02-09 17:43:23.000000000 +0100 +++ new/Eval-Closure-0.11/weaver.ini 1970-01-01 01:00:00.000000000 +0100 @@ -1,28 +0,0 @@ -[@CorePrep] - -[Name] -[Version] - -[Region / prelude] - -[Generic / SYNOPSIS] -[Generic / DESCRIPTION] -[Generic / OVERVIEW] - -[Collect / ATTRIBUTES] -command = attr - -[Collect / METHODS] -command = method - -[Collect / FUNCTIONS] -command = func - -[Leftovers] - -[Region / postlude] - -[Generic / SEEALSO] -header = SEE ALSO - -[Legal] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/xt/release/eol.t new/Eval-Closure-0.11/xt/release/eol.t --- old/Eval-Closure-0.08/xt/release/eol.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Eval-Closure-0.11/xt/release/eol.t 2013-07-30 22:30:51.000000000 +0200 @@ -0,0 +1,8 @@ +use strict; +use warnings; +use Test::More; + +eval 'use Test::EOL'; +plan skip_all => 'Test::EOL required' if $@; + +all_perl_files_ok({ trailing_whitespace => 1 }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/xt/release/no-tabs.t new/Eval-Closure-0.11/xt/release/no-tabs.t --- old/Eval-Closure-0.08/xt/release/no-tabs.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Eval-Closure-0.11/xt/release/no-tabs.t 2013-07-30 22:30:51.000000000 +0200 @@ -0,0 +1,8 @@ +use strict; +use warnings; +use Test::More; + +eval 'use Test::NoTabs'; +plan skip_all => 'Test::NoTabs required' if $@; + +all_perl_files_ok(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/xt/release/pod-coverage.t new/Eval-Closure-0.11/xt/release/pod-coverage.t --- old/Eval-Closure-0.08/xt/release/pod-coverage.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Eval-Closure-0.11/xt/release/pod-coverage.t 2013-07-30 22:30:51.000000000 +0200 @@ -0,0 +1,13 @@ +#!perl + +use Test::More; + +eval "use Test::Pod::Coverage 1.08"; +plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage" + if $@; + +eval "use Pod::Coverage::TrustPod"; +plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage" + if $@; + +all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Eval-Closure-0.08/xt/release/pod-syntax.t new/Eval-Closure-0.11/xt/release/pod-syntax.t --- old/Eval-Closure-0.08/xt/release/pod-syntax.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Eval-Closure-0.11/xt/release/pod-syntax.t 2013-07-30 22:30:51.000000000 +0200 @@ -0,0 +1,7 @@ +#!perl +use Test::More; + +eval "use Test::Pod 1.41"; +plan skip_all => "Test::Pod 1.41 required for testing POD" if $@; + +all_pod_files_ok(); -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org