In perl.git, the branch smoke-me/ilmari/remove-dollar-hat-encoding has been 
updated

<http://perl5.git.perl.org/perl.git/commitdiff/de47be304fa4e5210092a12b38fe8738c85850ad?hp=daf9b8fd72a6f44088404e203ef960f2d7f6c500>

  discards  daf9b8fd72a6f44088404e203ef960f2d7f6c500 (commit)
- Log -----------------------------------------------------------------
commit de47be304fa4e5210092a12b38fe8738c85850ad
Author: Dagfinn Ilmari MannsÃ¥ker <[email protected]>
Date:   Thu Jun 1 18:16:56 2017 +0100

    Make setting ${^ENCODING} to a defined value fatal
-----------------------------------------------------------------------

Summary of changes:
 AUTHORS                                            |   1 +
 MANIFEST                                           |   1 +
 Porting/Maintainers.pl                             |   2 +-
 Porting/bench.pl                                   |   2 +-
 Porting/cmpVERSION.pl                              |   7 +
 Porting/deparse-skips.txt                          | 239 ++++++-----
 README.synology                                    |  14 +-
 cpan/ExtUtils-Install/lib/ExtUtils/Install.pm      | 192 +++++----
 cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm    |   2 +-
 cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm     |   2 +-
 cpan/ExtUtils-Install/t/Install.t                  |  14 +-
 cpan/ExtUtils-Install/t/InstallWithMM.t            |   2 +-
 cpan/ExtUtils-Install/t/Installed.t                |   3 +
 .../t/lib/MakeMaker/Test/Setup/BFD.pm              |  12 +
 dist/Module-CoreList/t/maintainer.t                |   3 +
 doop.c                                             |   8 +-
 gv.c                                               |   2 +
 hints/freebsd.sh                                   |   9 +
 lib/B/Deparse.pm                                   | 247 +++++++++++-
 lib/B/Deparse.t                                    |  55 ++-
 lib/B/Op_private.pm                                |   6 +-
 mg.c                                               |  23 +-
 op.c                                               |   6 +
 opcode.h                                           | 437 +++++++++++----------
 perl.h                                             |   7 +-
 pod/perldata.pod                                   |   6 +-
 pod/perldelta.pod                                  |  14 +
 pod/perldiag.pod                                   |  34 +-
 pod/perlrun.pod                                    |   1 -
 pp.c                                               |  44 ++-
 pp.h                                               |   6 +-
 pp_ctl.c                                           |  36 +-
 pp_sys.c                                           |   8 +-
 regen/op_private                                   |   2 +-
 regexec.c                                          |   3 +
 sv.c                                               |  52 +--
 t/TEST                                             |  20 +-
 t/base/rs.t                                        |  32 +-
 t/lib/croak/pp_sys                                 |  59 +++
 t/lib/croak/toke                                   |  17 +
 t/lib/warnings/9uninit                             |  12 +-
 t/lib/warnings/mg                                  |  20 -
 t/lib/warnings/pp_sys                              |  59 ---
 t/lib/warnings/toke                                |  18 -
 t/op/chdir.t                                       |  23 +-
 t/op/closure.t                                     |   2 +-
 t/op/eval.t                                        |  34 +-
 t/op/heredoc.t                                     |  12 +-
 t/op/lex.t                                         |   5 +-
 t/op/ref.t                                         |  63 ++-
 t/op/stat.t                                        |  29 +-
 t/perf/benchmarks                                  |  34 ++
 t/perf/optree.t                                    |   3 +-
 t/porting/cmp_version.t                            |   7 +
 t/uni/heavy.t                                      |  38 ++
 toke.c                                             |   2 +-
 56 files changed, 1273 insertions(+), 718 deletions(-)
 create mode 100644 t/uni/heavy.t

diff --git a/AUTHORS b/AUTHORS
index 40c6393e00..7ef3c5c5d2 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -402,6 +402,7 @@ Erich Rickheit
 Eryq                           <[email protected]>
 Etienne Grossman               <[email protected]>
 Eugene Alterman                        <[email protected]>
+Eugen Konkov                   <[email protected]>
 Evan Miller                    <[email protected]>
 Evan Zacks                     <[email protected]>
 Fabien Tassin                  <[email protected]>
diff --git a/MANIFEST b/MANIFEST
index e474e51f9a..8c4950e1b4 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5880,6 +5880,7 @@ t/uni/fold.t                      See if Unicode folding 
works
 t/uni/goto.t                   See if Unicode goto &sub works
 t/uni/greek.t                  See if Unicode in greek works
 t/uni/gv.t                     See if Unicode GVs work.
+t/uni/heavy.t                  See if utf8_heavy.pl uses perl that depends on 
it
 t/uni/labels.t                 See if Unicode labels work
 t/uni/latin2.t                 See if Unicode in latin2 works
 t/uni/lex_utf8.t               See if Unicode in lexer works
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index 26ada3539f..b7d4b3b8fe 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -446,7 +446,7 @@ use File::Glob qw(:case);
     },
 
     'ExtUtils::Install' => {
-        'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.04.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.14.tar.gz',
         'FILES'        => q[cpan/ExtUtils-Install],
         'EXCLUDED'     => [
             qw( t/lib/Test/Builder.pm
diff --git a/Porting/bench.pl b/Porting/bench.pl
index 840d7231d0..224e862e66 100755
--- a/Porting/bench.pl
+++ b/Porting/bench.pl
@@ -431,7 +431,7 @@ my %OPTS = (
               . "'$OPTS{sort}'\n";
         }
         my ($field, $perl) = @s;
-        die "Error: --sort: unknown field '$field\n"
+        die "Error: --sort: unknown field '$field'\n"
             unless $VALID_FIELDS{$field};
         # the 'perl' value will be validated later, after we have processed
         # the perls
diff --git a/Porting/cmpVERSION.pl b/Porting/cmpVERSION.pl
index 01f77c8e82..dd21b655fe 100755
--- a/Porting/cmpVERSION.pl
+++ b/Porting/cmpVERSION.pl
@@ -81,6 +81,7 @@ if ($exclude_upstream) {
 # usually because they pull in their version from some other file.
 my %skip;
 @skip{
+    'cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm', # just a test 
module
     'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm', # just a test 
module
     'cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm',  # just a test 
module
     'cpan/IO-Compress/lib/File/GlobMapper.pm', # upstream needs to supply 
$VERSION
@@ -169,6 +170,7 @@ unless (%module_diffs) {
 }
 
 printf "1..%d\n" => scalar keys %module_diffs if $tap;
+print "#\n# Comparing against $tag_to_compare ....\n#\n" if $tap;
 
 my $count;
 my $diff_cmd = "git --no-pager diff $tag_to_compare ";
@@ -194,9 +196,14 @@ foreach my $pm_file (sort keys %module_diffs) {
         print "ok $count - $pm_file\n" if $tap;
     } else {
        if ($tap) {
+            print "#\n# " . '-' x 75 . "\n"
+            . "# Version number ($pm_version) unchanged since"
+            . " $tag_to_compare, but contents have changed:\n#\n";
            foreach (sort @{$module_diffs{$pm_file}}) {
                print "# $_" for `$diff_cmd $q$_$q`;
            }
+            print "# " . '-' x 75 . "\n";
+
            if (exists $skip_versions{$pm_file}
                and grep $pm_version eq $_, @{$skip_versions{$pm_file}}) {
                print "ok $count - SKIP $pm_file version $pm_version\n";
diff --git a/Porting/deparse-skips.txt b/Porting/deparse-skips.txt
index efac18fb0b..130fcaaff2 100644
--- a/Porting/deparse-skips.txt
+++ b/Porting/deparse-skips.txt
@@ -31,31 +31,79 @@
 
 __DEPARSE_FAILURES__
 
-../cpan/Scalar-List-Utils/t/proto.t
-../cpan/Term-ANSIColor/t/taint/basic.t
-../cpan/autodie/t/internal.t
-../cpan/AutoLoader/t/01AutoLoader.t
-../cpan/CGI/t/utf8.t
-../cpan/ExtUtils-MakeMaker/t/xs.t
-../cpan/File-Path/t/taint.t
-../cpan/Module-Build/t/manifypods_with_utf8.t
-../cpan/Socket/t/sockaddr.t
-../cpan/Term-ANSIColor/t/taint.t
-../cpan/Test-Simple/t/Builder/carp.t
-../cpan/Test-Simple/t/fail-more.t
-../cpan/Test-Simple/t/is_deeply_fail.t
-../cpan/Test-Simple/t/plan.t
-../cpan/Test-Simple/t/plan_bad.t
-../cpan/Test-Simple/t/subtest/line_numbers.t
-../cpan/Test-Simple/t/subtest/predicate.t
-../cpan/autodie/t/00-load.t
+base/lex.t                # checks regexp stringification
+comp/final_line_num.t     # tests syntax error after BEGIN block
+comp/fold.t               # mutability of folded constants
+comp/parser.t             # crazy #line directives ==> shell syntax errors
+mro/basic_01_c3_utf8.t
+mro/basic_01_dfs_utf8.t
+mro/complex_c3_utf8.t
+mro/isarev.t
+mro/isarev_utf8.t
+op/attrhand.t             # Custom attrs ignored; also AH provides none
+op/caller.t
+op/each.t                 # utf8ness of deparsed strings
+op/goto.t
+op/gv.t                   # glob copy constants
+op/hexfp.t
+op/index.t
+op/join.t                 # mutability of folded constants
+op/length.t               # utf8ness of deparsed strings
+op/lexsub.t
+op/local.t
+op/lvref.t
+op/not.t
+op/overload_integer.t
+op/override.t
+op/pack.t
+op/postfixderef.t
+op/range.t
+op/readline.t
+op/srand.t
+op/sub_lval.t
+op/sub.t
+op/switch.t
+op/symbolcache.t
+op/taint.t
+op/vec.t
+op/warn.t
+op/write.t
+porting/globvar.t
+re/overload.t             # [perl #123385] %^H output
+re/pat_advanced.t         # [perl #123417]
+re/pat_rt_report.t        # malformed utf8 constant; also /\c@/ -> /\c\@/
+re/pat.t                  # [perl #90590]
+re/regexp_unicode_prop.t
+re/regex_sets.t
+re/reg_fold.t             # [perl #123385] %^H output
+re/rxcode.t               # checks regexp stringification
+re/subst.t
+run/switchd-78586.t       # -I on #! line is not deparsed
+run/switchI.t             # -I on #! line is not deparsed
+uni/attrs.t
+uni/bless.t
+uni/gv.t
+uni/labels.t
+uni/lex_utf8.t
+uni/method.t
+uni/package.t
+uni/parser.t
+uni/readline.t
+uni/select.t
+uni/stash.t
+uni/tie.t
+uni/universal.t
+uni/variables.t
+../cpan/Archive-Tar/t/03_file.t         # constant sub ref: FOO->()
 ../cpan/autodie/t/autodie.t
+../cpan/autodie/t/basic_exceptions.t
+../cpan/autodie/t/binmode.t
 ../cpan/autodie/t/blog_hints.t
 ../cpan/autodie/t/caller.t
 ../cpan/autodie/t/chmod.t
 ../cpan/autodie/t/chown.t
-../cpan/autodie/t/context.t
 ../cpan/autodie/t/context_lexical.t
+../cpan/autodie/t/context.t
 ../cpan/autodie/t/crickey.t
 ../cpan/autodie/t/dbmopen.t
 ../cpan/autodie/t/eval_error.t
@@ -63,80 +111,86 @@ __DEPARSE_FAILURES__
 ../cpan/autodie/t/exceptions.t
 ../cpan/autodie/t/exec.t
 ../cpan/autodie/t/filehandles.t
-../cpan/autodie/t/hints.t
+../cpan/autodie/t/fileno.t
 ../cpan/autodie/t/hints_insist.t
 ../cpan/autodie/t/hints_pod_examples.t
 ../cpan/autodie/t/hints_provider_does.t
 ../cpan/autodie/t/hints_provider_easy_does_it.t
 ../cpan/autodie/t/hints_provider_isa.t
+../cpan/autodie/t/hints.t
+../cpan/autodie/t/internal.t
 ../cpan/autodie/t/kill.t
 ../cpan/autodie/t/lethal.t
+../cpan/autodie/t/mkdir.t
 ../cpan/autodie/t/open.t
+../cpan/autodie/t/read.t
 ../cpan/autodie/t/recv.t
 ../cpan/autodie/t/repeat.t
 ../cpan/autodie/t/scope_leak.t
 ../cpan/autodie/t/sysopen.t
+../cpan/autodie/t/truncate.t
+../cpan/autodie/t/unlink.t
 ../cpan/autodie/t/user-context.t
 ../cpan/autodie/t/usersub.t
 ../cpan/autodie/t/utf8_open.t
 ../cpan/autodie/t/utime.t
 ../cpan/autodie/t/version_tag.t
-../cpan/podlators/t/basic.t
+../cpan/AutoLoader/t/01AutoLoader.t
+../cpan/bignum/t/big_e_pi.t
+../cpan/bignum/t/bigexp.t
+../cpan/bignum/t/bigint.t
+../cpan/bignum/t/bignum.t
+../cpan/bignum/t/bigrat.t
+../cpan/bignum/t/bii_e_pi.t
+../cpan/bignum/t/biinfnan.t
+../cpan/bignum/t/bir_e_pi.t
+../cpan/bignum/t/bninfnan.t
+../cpan/bignum/t/brinfnan.t
+../cpan/bignum/t/in_effect.t
+../cpan/bignum/t/option_a.t
+../cpan/bignum/t/option_l.t
+../cpan/bignum/t/option_p.t
+../cpan/bignum/t/overrides.t
+../cpan/bignum/t/ratopt_a.t
+../cpan/bignum/t/scope_f.t
+../cpan/bignum/t/scope_i.t
+../cpan/bignum/t/scope_r.t
+../cpan/Math-BigInt/t/constant.t
+../cpan/Math-BigInt/t/const_mbf.t
+../cpan/Module-Metadata/t/metadata.t
+../cpan/Scalar-List-Utils/t/subname.t
+../cpan/Scalar-List-Utils/t/uniq.t
+../cpan/Socket/t/sockaddr.t
+../cpan/Term-Cap/test.pl
+../cpan/Test-Simple/t/Legacy/Builder/carp.t
+../cpan/Test-Simple/t/Legacy/fail-more.t
+../cpan/Test-Simple/t/Legacy/is_deeply_fail.t
+../cpan/Test-Simple/t/Legacy/plan_bad.t
+../cpan/Test-Simple/t/Legacy/plan.t
+../cpan/Test-Simple/t/Legacy/subtest/line_numbers.t
+../cpan/Test-Simple/t/Legacy/subtest/predicate.t
+../cpan/Test-Simple/t/regression/684-nested_todo_diag.t
+../cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t
 ../dist/Attribute-Handlers/t/constants.t
 ../dist/Attribute-Handlers/t/data_convert.t
 ../dist/Attribute-Handlers/t/linerep.t
 ../dist/Attribute-Handlers/t/multi.t
 ../dist/Carp/t/Carp.t
+../dist/constant/t/constant.t
 ../dist/Data-Dumper/t/dumper.t
+../dist/Data-Dumper/t/trailing_comma.t
 ../dist/Exporter/t/Exporter.t
 ../dist/Filter-Simple/t/data.t
-../dist/IO/t/io_file_export.t
-../dist/IO/t/io_multihomed.t
 ../dist/IO/t/io_sel.t
-../dist/IO/t/io_udp.t
-../dist/Locale-Maketext/t/01_about_verbose.t
-../dist/Locale-Maketext/t/10_make.t
-../dist/Locale-Maketext/t/20_get.t
-../dist/Locale-Maketext/t/40_super.t
-../dist/Locale-Maketext/t/50_super.t
-../dist/Locale-Maketext/t/60_super.t
-../dist/Locale-Maketext/t/70_fail_auto.t
-../dist/Locale-Maketext/t/91_backslash.t
-../dist/Math-BigInt/t/const_mbf.t
-../dist/Math-BigInt/t/constant.t
 ../dist/PathTools/t/cwd.t
 ../dist/Storable/t/blessed.t
 ../dist/Storable/t/croak.t
-../dist/Thread-Queue/t/08_nothreads.t
-../dist/bignum/t/big_e_pi.t
-../dist/bignum/t/bigexp.t
-../dist/bignum/t/bigint.t
-../dist/bignum/t/bignum.t
-../dist/bignum/t/bigrat.t
-../dist/bignum/t/bii_e_pi.t
-../dist/bignum/t/bir_e_pi.t
-../dist/bignum/t/in_effect.t
-../dist/bignum/t/option_a.t
-../dist/bignum/t/option_l.t
-../dist/bignum/t/option_p.t
-../dist/bignum/t/overrides.t
-../dist/bignum/t/ratopt_a.t
-../dist/bignum/t/scope_f.t
-../dist/bignum/t/scope_i.t
-../dist/bignum/t/scope_r.t
-../dist/constant/t/constant.t
-../dist/threads/t/err.t
-../dist/threads/t/exit.t
-../dist/threads/t/kill2.t
-../dist/threads/t/libc.t
-../dist/threads/t/thread.t
+../dist/threads/t/blocks.t
 ../ext/B/t/b.t
 ../ext/B/t/optree_constants.t
 ../ext/B/t/optree_samples.t
 ../ext/B/t/xref.t
 ../ext/Devel-Peek/t/Peek.t
-../ext/File-Glob/t/taint.t
-../ext/Hash-Util/t/Util.t
 ../ext/IPC-Open3/t/IPC-Open2.t
 ../ext/IPC-Open3/t/IPC-Open3.t
 ../ext/XS-APItest/t/autoload.t
@@ -145,70 +199,13 @@ __DEPARSE_FAILURES__
 ../ext/XS-APItest/t/cleanup.t
 ../ext/XS-APItest/t/fetch_pad_names.t
 ../ext/XS-APItest/t/svpeek.t
-../lib/DB.t
-../lib/English.t
-../lib/File/Basename.t
+../ext/XS-APItest/t/synthetic_scope.t
+../lib/Benchmark.t
 ../lib/charnames.t
+../lib/dumpvar.t
+../lib/English.t
 ../lib/overload.t
-base/lex.t                # checks regexp stringification
-comp/final_line_num.t     # tests syntax error after BEGIN block
-comp/fold.t               # mutability of folded constants
-comp/parser.t             # crazy #line directives ==> shell syntax errors
-mro/isarev.t
-mro/isarev_utf8.t
-op/attrhand.t             # Custom attrs ignored; also AH provides none
-op/attrs.t                # [perl #70205] my attrs
-op/caller.t
-op/each.t                 # utf8ness of deparsed strings
-op/getpid.t               # [perl #70205] my attrs
-op/goto.t
-op/gv.t                   # glob copy constants
-op/index.t
-op/join.t                 # mutability of folded constants
-op/length.t               # utf8ness of deparsed strings
-op/lexsub.t
-op/local.t
-op/not.t
-op/overload_integer.t
-op/override.t
-op/pack.t
-op/postfixderef.t
-op/range.t
-op/readline.t
-op/srand.t
-op/sub.t
-op/sub_lval.t
-op/switch.t
-op/symbolcache.t
-op/taint.t
-op/vec.t
-op/warn.t
-op/write.t
-porting/globvar.t
-re/overload.t             # [perl #123385] %^H output
-re/pat.t                  # [perl #90590]
-re/pat_advanced.t         # [perl #123417]
-re/pat_rt_report.t        # malformed utf8 constant; also /\c@/ -> /\c\@/
-re/reg_fold.t             # [perl #123385] %^H output
-re/regex_sets.t
-re/regexp_unicode_prop.t
-re/rxcode.t               # checks regexp stringification
-re/subst.t
-run/switchI.t             # -I on #! line is not deparsed
-run/switchd-78586.t       # -I on #! line is not deparsed
-uni/attrs.t
-uni/bless.t
-uni/gv.t
-uni/labels.t
-uni/lex_utf8.t
-uni/method.t
-uni/package.t
-uni/parser.t
-uni/readline.t
-uni/select.t
-uni/stash.t
-uni/tie.t
-uni/universal.t
+
 
 __DEPARSE_SKIPS__
 
diff --git a/README.synology b/README.synology
index 6a02027164..b1b9d8811c 100644
--- a/README.synology
+++ b/README.synology
@@ -23,11 +23,11 @@ L<Synology 
FAQ|http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my
 Since it is based on Linux, the NAS can run many popular Linux
 software packages, including Perl. In fact, Synology provides a
 ready-to-install package for Perl, depending on the version of DSM
-the installed perl ranges from 5.8.6 on DSM-4.3 to 5.18.4 on DSM-6.0.1.
+the installed perl ranges from 5.8.6 on DSM-4.3 to 5.24.0 on DSM-6.1.
 
 There is an active user community that provides many software packages
 for the Synology DSM systems; at the time of writing this document
-they provide Perl version 5.18.4.
+they provide Perl version 5.24.1.
 
 This document describes various features of Synology DSM operating
 system that will affect how Perl 5 (hereafter just Perl) is
@@ -138,11 +138,13 @@ for DSM 6: entware/opkg. For instructions on how to use 
that, please read
 L<Install Entware-ng on Synology 
NAS|https://github.com/Entware-ng/Entware-ng/wiki/Install-on-Synology-NAS>
 
 That sadly does not (yet) work on QorIQ. At the moment of writing, the
-supported architectures are armv5, armv7, mipsel, x86_32 and x86_64.
+supported architectures are armv5, armv7, mipsel, wl500g, x86_32, and x86_64.
+Check L<here|http://pkg.entware.net/binaries/> for supported platforms.
 
-Entware-ng comes with a precompiled 5.22.1 (June 2016) that allowes
+Entware-ng comes with a precompiled 5.24.1 (June 2017) that allowes
 building shared XS code. Note that this installation does B<not> use
-a site_perl folder.
+a site_perl folder. The available C<cpan> works. If all required
+development packages are installed too, also for XS.
 
 =head2 Compiling Perl 5
 
@@ -265,7 +267,7 @@ the programs are run.
 
 =head1 REVISION
 
-June 2016, for Synology DSM 5.1.5022 and DSM 6.0.1-7393.
+June 2017, for Synology DSM 5.1.5022 and DSM 6.1-15101-4.
 
 =head1 AUTHOR
 
diff --git a/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm 
b/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
index 1e8ac4cd12..047c007145 100644
--- a/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
+++ b/cpan/ExtUtils-Install/lib/ExtUtils/Install.pm
@@ -1,24 +1,18 @@
 package ExtUtils::Install;
 use strict;
 
-use vars qw(@ISA @EXPORT $VERSION $MUST_REBOOT %Config);
-
-use AutoSplit;
-use Carp ();
 use Config qw(%Config);
 use Cwd qw(cwd);
-use Exporter;
-use ExtUtils::Packlist;
+use Exporter ();
 use File::Basename qw(dirname);
-use File::Compare qw(compare);
 use File::Copy;
-use File::Find qw(find);
 use File::Path;
 use File::Spec;
 
+our @ISA = ('Exporter');
+our @EXPORT = ('install','uninstall','pm_to_blib', 'install_default');
 
-@ISA = ('Exporter');
-@EXPORT = ('install','uninstall','pm_to_blib', 'install_default');
+our $MUST_REBOOT;
 
 =pod
 
@@ -38,11 +32,11 @@ ExtUtils::Install - install files from here to there
 
 =head1 VERSION
 
-2.04
+2.14
 
 =cut
 
-$VERSION = '2.04';  # <-- do not forget to update the POD section just above 
this line!
+our $VERSION = '2.14';  # <-- do not forget to update the POD section just 
above this line!
 $VERSION = eval $VERSION;
 
 =pod
@@ -95,18 +89,12 @@ Dies with a special message.
 
 =cut
 
-my $Is_VMS     = $^O eq 'VMS';
-my $Is_MacPerl = $^O eq 'MacOS';
-my $Is_Win32   = $^O eq 'MSWin32';
-my $Is_cygwin  = $^O eq 'cygwin';
-my $CanMoveAtBoot = ($Is_Win32 || $Is_cygwin);
-
-# *note* CanMoveAtBoot is only incidentally the same condition as below
-# this needs not hold true in the future.
-my $Has_Win32API_File = ($Is_Win32 || $Is_cygwin)
-    ? (eval {require Win32API::File; 1} || 0)
-    : 0;
-
+BEGIN {
+    *Is_VMS        = $^O eq 'VMS'     ? sub(){1} : sub(){0};
+    *Is_Win32      = $^O eq 'MSWin32' ? sub(){1} : sub(){0};
+    *Is_cygwin     = $^O eq 'cygwin'  ? sub(){1} : sub(){0};
+    *CanMoveAtBoot = ($^O eq 'MSWin32' || $^O eq 'cygwin') ? sub(){1} : 
sub(){0};
+}
 
 my $Inc_uninstall_warn_handler;
 
@@ -114,9 +102,12 @@ my $Inc_uninstall_warn_handler;
 
 my $INSTALL_ROOT = $ENV{PERL_INSTALL_ROOT};
 my $INSTALL_QUIET = $ENV{PERL_INSTALL_QUIET};
+$INSTALL_QUIET = 1
+  if (!exists $ENV{PERL_INSTALL_QUIET} and
+      defined $ENV{MAKEFLAGS} and
+      $ENV{MAKEFLAGS} =~ /\b(s|silent|quiet)\b/);
 
 my $Curdir = File::Spec->curdir;
-my $Updir  = File::Spec->updir;
 
 sub _estr(@) {
     return join "\n",'!' x 72,@_,'!' x 72,'';
@@ -132,9 +123,24 @@ sub _warnonce(@) {
 sub _choke(@) {
     my $first=shift;
     my $msg=_estr "ERROR: $first",@_;
+    require Carp;
     Carp::croak($msg);
 }
 
+sub _croak {
+    require Carp;
+    Carp::croak(@_);
+}
+sub _confess {
+    require Carp;
+    Carp::confess(@_);
+}
+
+sub _compare {
+    require File::Compare;
+    File::Compare::compare(@_);
+}
+
 
 sub _chmod($$;$) {
     my ( $mode, $item, $verbose )=@_;
@@ -173,47 +179,53 @@ If $moan is true then returns 0 on error and warns 
instead of dies.
 
 =cut
 
+{
+    my $Has_Win32API_File;
+    sub _move_file_at_boot { #XXX OS-SPECIFIC
+        my ( $file, $target, $moan  )= @_;
+        _confess("Panic: Can't _move_file_at_boot on this platform!")
+             unless CanMoveAtBoot;
+
+        my $descr= ref $target
+                    ? "'$file' for deletion"
+                    : "'$file' for installation as '$target'";
+
+        # *note* CanMoveAtBoot is only incidentally the same condition as below
+        # this needs not hold true in the future.
+        $Has_Win32API_File = (Is_Win32 || Is_cygwin)
+            ? (eval {require Win32API::File; 1} || 0)
+            : 0 unless defined $Has_Win32API_File;
+        if ( ! $Has_Win32API_File ) {
+
+            my @msg=(
+                "Cannot schedule $descr at reboot.",
+                "Try installing Win32API::File to allow operations on locked 
files",
+                "to be scheduled during reboot. Or try to perform the 
operation by",
+                "hand yourself. (You may need to close other perl processes 
first)"
+            );
+            if ( $moan ) { _warnonce(@msg) } else { _choke(@msg) }
+            return 0;
+        }
+        my $opts= Win32API::File::MOVEFILE_DELAY_UNTIL_REBOOT();
+        $opts= $opts | Win32API::File::MOVEFILE_REPLACE_EXISTING()
+            unless ref $target;
 
+        _chmod( 0666, $file );
+        _chmod( 0666, $target ) unless ref $target;
 
-sub _move_file_at_boot { #XXX OS-SPECIFIC
-    my ( $file, $target, $moan  )= @_;
-    Carp::confess("Panic: Can't _move_file_at_boot on this platform!")
-         unless $CanMoveAtBoot;
-
-    my $descr= ref $target
-                ? "'$file' for deletion"
-                : "'$file' for installation as '$target'";
-
-    if ( ! $Has_Win32API_File ) {
-
-        my @msg=(
-            "Cannot schedule $descr at reboot.",
-            "Try installing Win32API::File to allow operations on locked 
files",
-            "to be scheduled during reboot. Or try to perform the operation 
by",
-            "hand yourself. (You may need to close other perl processes first)"
-        );
-        if ( $moan ) { _warnonce(@msg) } else { _choke(@msg) }
+        if (Win32API::File::MoveFileEx( $file, $target, $opts )) {
+            $MUST_REBOOT ||= ref $target ? 0 : 1;
+            return 1;
+        } else {
+            my @msg=(
+                "MoveFileEx $descr at reboot failed: $^E",
+                "You may try to perform the operation by hand yourself. ",
+                "(You may need to close other perl processes first).",
+            );
+            if ( $moan ) { _warnonce(@msg) } else { _choke(@msg) }
+        }
         return 0;
     }
-    my $opts= Win32API::File::MOVEFILE_DELAY_UNTIL_REBOOT();
-    $opts= $opts | Win32API::File::MOVEFILE_REPLACE_EXISTING()
-        unless ref $target;
-
-    _chmod( 0666, $file );
-    _chmod( 0666, $target ) unless ref $target;
-
-    if (Win32API::File::MoveFileEx( $file, $target, $opts )) {
-        $MUST_REBOOT ||= ref $target ? 0 : 1;
-        return 1;
-    } else {
-        my @msg=(
-            "MoveFileEx $descr at reboot failed: $^E",
-            "You may try to perform the operation by hand yourself. ",
-            "(You may need to close other perl processes first).",
-        );
-        if ( $moan ) { _warnonce(@msg) } else { _choke(@msg) }
-    }
-    return 0;
 }
 
 
@@ -270,7 +282,7 @@ sub _unlink_or_rename { #XXX OS-SPECIFIC
     my $error="$!";
 
     _choke("Cannot unlink '$file': $!")
-          unless $CanMoveAtBoot && $tryhard;
+          unless CanMoveAtBoot && $tryhard;
 
     my $tmp= "AAA";
     ++$tmp while -e "$file.$tmp";
@@ -379,8 +391,8 @@ Abstract a -w check that tries to use POSIX::access() if 
possible.
     sub _have_write_access {
         my $dir=shift;
         unless (defined $has_posix) {
-            $has_posix= (!$Is_cygwin && !$Is_Win32
-             && eval 'local $^W; require POSIX; 1') || 0;
+            $has_posix = (!Is_cygwin && !Is_Win32
+             && eval { local $^W; require POSIX; 1} ) || 0;
         }
         if ($has_posix) {
             return POSIX::access($dir, POSIX::W_OK());
@@ -425,7 +437,7 @@ sub _can_write_dir {
     my $path='';
     my @make;
     while (@dirs) {
-        if ($Is_VMS) {
+        if (Is_VMS) {
             $dir = File::Spec->catdir($vol,@dirs);
         }
         else {
@@ -519,7 +531,7 @@ sub _copy {
     }
     if (!$dry_run) {
         File::Copy::copy($from,$to)
-            or Carp::croak( _estr "ERROR: Cannot copy '$from' to '$to': $!" );
+            or _croak( _estr "ERROR: Cannot copy '$from' to '$to': $!" );
     }
 }
 
@@ -673,7 +685,7 @@ sub install { #XXX OS-SPECIFIC
     if (@_==1 and eval { 1+@$from_to }) {
         my %opts        = @$from_to;
         $from_to        = $opts{from_to}
-                            or Carp::confess("from_to is a mandatory 
parameter");
+                            or _confess("from_to is a mandatory parameter");
         $verbose        = $opts{verbose};
         $dry_run        = $opts{dry_run};
         $uninstall_shadows  = $opts{uninstall_shadows};
@@ -694,6 +706,7 @@ sub install { #XXX OS-SPECIFIC
 
     my(%from_to) = %$from_to;
     my(%pack, $dir, %warned);
+    require ExtUtils::Packlist;
     my($packlist) = ExtUtils::Packlist->new();
 
     local(*DIR);
@@ -706,6 +719,13 @@ sub install { #XXX OS-SPECIFIC
     my $cwd = cwd();
     my @found_files;
     my %check_dirs;
+    require File::Find;
+
+    my $blib_lib  = File::Spec->catdir('blib', 'lib');
+    my $blib_arch = File::Spec->catdir('blib', 'arch');
+
+    # File::Find seems to always be Unixy except on MacPerl :(
+    my $current_directory = $^O eq 'MacOS' ? $Curdir : '.';
 
     MOD_INSTALL: foreach my $source (sort keys %from_to) {
         #copy the tree to the target directory without altering
@@ -720,8 +740,6 @@ sub install { #XXX OS-SPECIFIC
 
         my $targetroot = install_rooted_dir($from_to{$source});
 
-        my $blib_lib  = File::Spec->catdir('blib', 'lib');
-        my $blib_arch = File::Spec->catdir('blib', 'arch');
         if ($source eq $blib_lib and
             exists $from_to{$blib_arch} and
             directory_not_empty($blib_arch)
@@ -734,9 +752,7 @@ sub install { #XXX OS-SPECIFIC
         _chdir($source);
         # 5.5.3's File::Find missing no_chdir option
         # XXX OS-SPECIFIC
-        # File::Find seems to always be Unixy except on MacPerl :(
-        my $current_directory= $Is_MacPerl ? $Curdir : '.';
-        find(sub {
+        File::Find::find(sub {
             my ($mode,$size,$atime,$mtime) = (stat)[2,7,8,9];
 
             return if !-f _;
@@ -765,7 +781,7 @@ sub install { #XXX OS-SPECIFIC
                 $diff++;
             } else {
                 # we might not need to copy this file
-                $diff = compare($sourcefile, $targetfile);
+                $diff = _compare($sourcefile, $targetfile);
             }
             $check_dirs{$targetdir}++
                 unless -w $targetfile;
@@ -806,7 +822,7 @@ sub install { #XXX OS-SPECIFIC
 
                 #XXX OS-SPECIFIC
                 print "utime($atime,$mtime,$targetfile)\n" if $verbose>1;
-                utime($atime,$mtime + $Is_VMS,$targetfile) unless $dry_run>1;
+                utime($atime,$mtime + Is_VMS,$targetfile) unless $dry_run>1;
 
 
                 $mode = 0444 | ( $mode & 0111 ? 0111 : 0 );
@@ -936,7 +952,8 @@ Returns 0 if there is not.
 sub directory_not_empty ($) {
   my($dir) = @_;
   my $files = 0;
-  find(sub {
+  require File::Find;
+  File::Find::find(sub {
            return if $_ eq ".exists";
            if (-f) {
              $File::Find::prune++;
@@ -970,7 +987,7 @@ Consider its use discouraged.
 =cut
 
 sub install_default {
-  @_ < 2 or Carp::croak("install_default should be called with 0 or 1 
argument");
+  @_ < 2 or _croak("install_default should be called with 0 or 1 argument");
   my $FULLEXT = @_ ? shift : $ARGV[0];
   defined $FULLEXT or die "Do not know to where to write install log";
   my $INST_LIB = File::Spec->catdir($Curdir,"blib","lib");
@@ -1026,6 +1043,7 @@ sub uninstall {
         unless -f $fil;
     # my $my_req = $self->catfile(qw(auto ExtUtils Install forceunlink.al));
     # require $my_req; # Hairy, but for the first
+    require ExtUtils::Packlist;
     my ($packlist) = ExtUtils::Packlist->new($fil);
     foreach (sort(keys(%$packlist))) {
         chomp;
@@ -1076,7 +1094,7 @@ sub inc_uninstall {
     #warn join "\n","---",@dirs,"---";
     my $seen_ours;
     foreach $dir ( @dirs ) {
-        my $canonpath = $Is_VMS ? $dir : File::Spec->canonpath($dir);
+        my $canonpath = Is_VMS ? $dir : File::Spec->canonpath($dir);
         next if $canonpath eq $Curdir;
         next if $seen_dir{$canonpath}++;
         my $targetfile = File::Spec->catfile($canonpath,$libdir,$file);
@@ -1088,7 +1106,7 @@ sub inc_uninstall {
         my $diff = 0;
         if ( -f $targetfile && -s _ == -s $filepath) {
             # We have a good chance, we can skip this one
-            $diff = compare($filepath,$targetfile);
+            $diff = _compare($filepath,$targetfile);
         } else {
             $diff++;
         }
@@ -1158,11 +1176,12 @@ sub run_filter {
 
 =item B<pm_to_blib>
 
+    pm_to_blib(\%from_to);
     pm_to_blib(\%from_to, $autosplit_dir);
     pm_to_blib(\%from_to, $autosplit_dir, $filter_cmd);
 
 Copies each key of %from_to to its corresponding value efficiently.
-Filenames with the extension .pm are autosplit into the $autosplit_dir.
+If an $autosplit_dir is provided, all .pm files will be autosplit into it.
 Any destination directories are created.
 
 $filter_cmd is an optional shell command to run each .pm file through
@@ -1180,7 +1199,7 @@ environment variable will silence this output.
 sub pm_to_blib {
     my($fromto,$autodir,$pm_filter) = @_;
 
-    _mkpath($autodir,0,0755);
+    _mkpath($autodir,0,0755) if defined $autodir;
     while(my($from, $to) = each %$fromto) {
         if( -f $to && -s $from == -s $to && -M $to < -M $from ) {
             print "Skip $to (unchanged)\n" unless $INSTALL_QUIET;
@@ -1195,7 +1214,7 @@ sub pm_to_blib {
         my $need_filtering = defined $pm_filter && length $pm_filter &&
                              $from =~ /\.pm$/;
 
-        if (!$need_filtering && 0 == compare($from,$to)) {
+        if (!$need_filtering && 0 == _compare($from,$to)) {
             print "Skip $to (unchanged)\n" unless $INSTALL_QUIET;
             next;
         }
@@ -1213,10 +1232,10 @@ sub pm_to_blib {
             print "cp $from $to\n" unless $INSTALL_QUIET;
         }
         my($mode,$atime,$mtime) = (stat $from)[2,8,9];
-        utime($atime,$mtime+$Is_VMS,$to);
+        utime($atime,$mtime+Is_VMS,$to);
         _chmod(0444 | ( $mode & 0111 ? 0111 : 0 ),$to);
         next unless $from =~ /\.pm$/;
-        _autosplit($to,$autodir);
+        _autosplit($to,$autodir) if defined $autodir;
     }
 }
 
@@ -1234,7 +1253,8 @@ locking (ie. Windows).  So we wrap it and close the 
filehandle.
 =cut
 
 sub _autosplit { #XXX OS-SPECIFIC
-    my $retval = autosplit(@_);
+    require AutoSplit;
+    my $retval = AutoSplit::autosplit(@_);
     close *AutoSplit::IN if defined *AutoSplit::IN{IO};
 
     return $retval;
@@ -1265,7 +1285,7 @@ sub DESTROY {
         $plural = $i>1 ? "all those files" : "this file";
         my $inst = (_invokant() eq 'ExtUtils::MakeMaker')
                  ? ( $Config::Config{make} || 'make' ).' install'
-                     . ( $Is_VMS ? '/MACRO="UNINST"=1' : ' UNINST=1' )
+                     . ( ExtUtils::Install::Is_VMS ? '/MACRO="UNINST"=1' : ' 
UNINST=1' )
                  : './Build install uninst=1';
         print "## Running '$inst' will unlink $plural for you.\n";
     }
diff --git a/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm 
b/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm
index 061c32916f..8327a95a3d 100644
--- a/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm
+++ b/cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm
@@ -17,7 +17,7 @@ my $DOSISH = ($^O =~ /^(MSWin\d\d|os2|dos|mint)$/);
 require VMS::Filespec if $Is_VMS;
 
 use vars qw($VERSION);
-$VERSION = '2.04';
+$VERSION = '2.14';
 $VERSION = eval $VERSION;
 
 sub _is_prefix {
diff --git a/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm 
b/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm
index c1ab00216b..f94e3d05cc 100644
--- a/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm
+++ b/cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm
@@ -5,7 +5,7 @@ use strict;
 use Carp qw();
 use Config;
 use vars qw($VERSION $Relocations);
-$VERSION = '2.04';
+$VERSION = '2.14';
 $VERSION = eval $VERSION;
 
 # Used for generating filehandle globs.  IO::File might not be available!
diff --git a/cpan/ExtUtils-Install/t/Install.t 
b/cpan/ExtUtils-Install/t/Install.t
index 440d23082d..0900b58cb8 100644
--- a/cpan/ExtUtils-Install/t/Install.t
+++ b/cpan/ExtUtils-Install/t/Install.t
@@ -12,7 +12,7 @@ use File::Path;
 use File::Spec;
 use File::Temp qw[tempdir];
 
-use Test::More tests => 60;
+use Test::More tests => 62;
 
 use MakeMaker::Test::Setup::BFD;
 
@@ -269,3 +269,15 @@ SKIP: {
     ok(compare("$bigdir/Dummy.pm", "$bigdir/DummyOrig.pm"),
         "orig file should be different");
 }
+
+pm_to_blib( { 'lib/Dummy/Split.pm' => 'blib/lib/Dummy/Split.pm' },
+            'blib/lib/auto'
+          );
+
+ok( -r 'blib/lib/auto/Dummy/Split/split.al',
+  'pm_to_blib does autosplit on appropriate files',
+);
+eval {
+  pm_to_blib( { 'lib/Dummy/Split.pm' => 'blib/lib/Dummy/Split.pm' } );
+};
+is $@, '', 'pm_to_blib with no autodir works';
diff --git a/cpan/ExtUtils-Install/t/InstallWithMM.t 
b/cpan/ExtUtils-Install/t/InstallWithMM.t
index 58ffd3eceb..d656d43833 100644
--- a/cpan/ExtUtils-Install/t/InstallWithMM.t
+++ b/cpan/ExtUtils-Install/t/InstallWithMM.t
@@ -56,7 +56,7 @@ delete @ENV{qw(PREFIX LIB MAKEFLAGS)};
     ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy" ) ||
       diag("chdir failed: $!");
 
-    my @mpl_out = run(qq{$perl Makefile.PL "PREFIX=../dummy-install"});
+    my @mpl_out = run(qq{"$perl" Makefile.PL "PREFIX=../dummy-install"});
     END { rmtree '../dummy-install'; }
 
     cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) ||
diff --git a/cpan/ExtUtils-Install/t/Installed.t 
b/cpan/ExtUtils-Install/t/Installed.t
index 5c5c4d3d09..d6a099e9c7 100644
--- a/cpan/ExtUtils-Install/t/Installed.t
+++ b/cpan/ExtUtils-Install/t/Installed.t
@@ -109,6 +109,9 @@ my $fake_mod_dir = File::Spec->catdir(cwd(), 'auto', 
'FakeMod');
 
     # should find $fake_mod_dir via '.' in @INC
 
+    local @INC = @INC;
+    push @INC, '.' if not $INC[-1] eq '.';
+
     my $realei = ExtUtils::Installed->new();
     isa_ok( $realei, 'ExtUtils::Installed' );
     isa_ok( $realei->{Perl}{packlist}, 'ExtUtils::Packlist' );
diff --git a/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm 
b/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm
index 868d0b9019..37ca9a3c01 100644
--- a/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm
+++ b/cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm
@@ -88,6 +88,18 @@ print "Big::Liar's vars\n";
 foreach my $key (qw(INST_LIB INST_ARCHLIB)) {
     print "$key = $mm->{$key}\n";
 }
+END
+
+             'Big-Dummy/lib/Dummy/Split.pm'     => <<'END',
+package Dummy::Split;
+$VERSION = 0.02;
+use AutoLoader 'AUTOLOAD';
+
+__END__
+
+sub split { print "split\n"; }
+
+1;
 END
 
             );
diff --git a/dist/Module-CoreList/t/maintainer.t 
b/dist/Module-CoreList/t/maintainer.t
index 7a3d6584e4..b096269d27 100644
--- a/dist/Module-CoreList/t/maintainer.t
+++ b/dist/Module-CoreList/t/maintainer.t
@@ -24,5 +24,8 @@ is( scalar keys %vers, 1, 'All Module-CoreList modules should 
have the same $VER
 
 # Check that there is a release entry for the current perl version
 my $released = $Module::CoreList::released{ $] };
+# duplicate fetch to avoid 'used only once: possible typo' warning
+$released = $Module::CoreList::released{ $] };
+
 ok( defined $released, "There is a released entry for $]" );
 like( $released, qr!^\d{4}\-\d{2}\-\d{2}$!, 'It should be a date in YYYY-MM-DD 
format' );
diff --git a/doop.c b/doop.c
index 0a546cce8f..1b71402485 100644
--- a/doop.c
+++ b/doop.c
@@ -1335,12 +1335,8 @@ Perl_do_kv(pTHX)
            XPUSHs(sv);
        }
        if (dovalues) {
-           SV *tmpstr = hv_iterval(keys,entry);
-           DEBUG_H(Perl_sv_setpvf(aTHX_ tmpstr, "%lu%%%d=%lu",
-                           (unsigned long)HeHASH(entry),
-                           (int)HvMAX(keys)+1,
-                           (unsigned long)(HeHASH(entry) & HvMAX(keys))));
-           XPUSHs(tmpstr);
+           SV *const sv = hv_iterval(keys,entry);
+           XPUSHs(sv);
        }
     }
     RETURN;
diff --git a/gv.c b/gv.c
index 81fa5de631..ea41e78725 100644
--- a/gv.c
+++ b/gv.c
@@ -1339,6 +1339,7 @@ S_require_tie_mod(pTHX_ GV *gv, const char varname, const 
char * name,
       GV **gvp;
       dSP;
 
+      PUSHSTACKi(PERLSI_MAGIC);
       ENTER;
 
 #define HV_FETCH_TIE_FUNC (GV **)hv_fetchs(stash, "_tie_it", 0)
@@ -1368,6 +1369,7 @@ S_require_tie_mod(pTHX_ GV *gv, const char varname, const 
char * name,
       PUTBACK;
       call_sv((SV *)*gvp, G_VOID|G_DISCARD);
       LEAVE;
+      POPSTACK;
     }
 }
 
diff --git a/hints/freebsd.sh b/hints/freebsd.sh
index e5ecea8db9..fc6d73f87b 100644
--- a/hints/freebsd.sh
+++ b/hints/freebsd.sh
@@ -320,3 +320,12 @@ d_printf_format_null='undef'
 
 # As of 10.3-RELEASE FreeBSD.  See [perl #128867]
 d_uselocale='undef'
+
+# https://rt.perl.org/Ticket/Display.html?id=131337
+case "$cc" in
+*g++*)
+  usedl='define'
+  dlsrc='dl_dlopen.xs'
+  ;;
+esac
+
diff --git a/lib/B/Deparse.pm b/lib/B/Deparse.pm
index 6c35a7275e..b22683ac49 100644
--- a/lib/B/Deparse.pm
+++ b/lib/B/Deparse.pm
@@ -12,7 +12,8 @@ use Carp;
 use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
         OPf_WANT OPf_WANT_VOID OPf_WANT_SCALAR OPf_WANT_LIST
         OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL OPf_MOD OPf_PARENS
-        OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpCONST_BARE
+        OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpKVSLICE
+         OPpCONST_BARE
         OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY
         OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER OPpREPEAT_DOLIST
         OPpSORT_REVERSE OPpMULTIDEREF_EXISTS OPpMULTIDEREF_DELETE
@@ -362,7 +363,8 @@ BEGIN {
 
 
 BEGIN { for (qw[ const stringify rv2sv list glob pushmark null aelem
-                nextstate dbstate rv2av rv2hv helem custom ]) {
+                kvaslice kvhslice
+                 nextstate dbstate rv2av rv2hv helem custom ]) {
     eval "sub OP_\U$_ () { " . opnumber($_) . "}"
 }}
 
@@ -402,13 +404,27 @@ sub _pessimise_walk {
 
        # pessimisations end here
 
-       if (class($op) eq 'PMOP'
-           && ref($op->pmreplroot)
-           && ${$op->pmreplroot}
-           && $op->pmreplroot->isa( 'B::OP' ))
-       {
-           $self-> _pessimise_walk($op->pmreplroot);
-       }
+       if (class($op) eq 'PMOP') {
+           if (ref($op->pmreplroot)
+                && ${$op->pmreplroot}
+                && $op->pmreplroot->isa( 'B::OP' ))
+            {
+                $self-> _pessimise_walk($op->pmreplroot);
+            }
+
+            # pessimise any /(?{...})/ code blocks
+            my ($re, $cv);
+            my $code_list = $op->code_list;
+            if ($$code_list) {
+                $self->_pessimise_walk($code_list);
+            }
+            elsif (${$re = $op->pmregexp} && ${$cv = $re->qr_anoncv}) {
+                $code_list = $cv->ROOT      # leavesub
+                               ->first      #   qr
+                               ->code_list; #     list
+                $self->_pessimise_walk($code_list);
+            }
+        }
 
        if ($op->flags & OPf_KIDS) {
            $self-> _pessimise_walk($op->first);
@@ -424,6 +440,8 @@ sub _pessimise_walk {
 sub _pessimise_walk_exe {
     my ($self, $startop, $visited) = @_;
 
+    no warnings 'recursion';
+
     return unless $$startop;
     return if $visited->{$$startop};
     my ($op, $prevop);
@@ -558,7 +576,17 @@ sub next_todo {
                 #  makes use of a lexical var that's not in scope.
                 #  So strip it out.
                 return $pragmata
-                            if $use_dec =~ /^use \S+ \(@\{\$args\[0\];\}\);/;
+                        if $use_dec =~
+                            m/
+                                \A
+                                use \s \S+ \s \(\@\{
+                                (
+                                    \s*\#line\ \d+\ \".*"\s*
+                                )?
+                                \$args\[0\];\}\);
+                                \n
+                                \Z
+                            /x;
 
                $use_dec =~ s/^(use|no)\b/$self->keyword($1)/e;
            }
@@ -612,6 +640,9 @@ sub begin_is_use {
     my $req_op = $lineseq->first->sibling;
     return if $req_op->name ne "require";
 
+    # maybe it's C<require expr> rather than C<require 'foo'>
+    return if ($req_op->first->name ne 'const');
+
     my $module;
     if ($req_op->first->private & OPpCONST_BARE) {
        # Actually it should always be a bareword
@@ -2648,7 +2679,7 @@ sub pp_delete {
     my($op, $cx) = @_;
     my $arg;
     my $name = $self->keyword("delete");
-    if ($op->private & OPpSLICE) {
+    if ($op->private & (OPpSLICE|OPpKVSLICE)) {
        if ($op->flags & OPf_SPECIAL) {
            # Deleting from an array, not a hash
            return $self->maybe_parens_func($name,
@@ -3516,9 +3547,167 @@ BEGIN {
     delete @uses_intro{qw( lvref lvrefslice lvavref entersub )};
 }
 
+
+# Look for a my attribute declaration in a list or ex-list. Returns undef
+# if not found, 'my($x, @a) :Foo(bar)' etc otherwise.
+#
+# There are three basic tree structs that are expected:
+#
+# my $x :foo;
+#      <1> ex-list vK/LVINTRO ->c
+#         <0> ex-pushmark v ->3
+#         <1> entersub[t2] vKRS*/TARG ->b
+#                ....
+#         <0> padsv[$x:64,65] vM/LVINTRO ->c
+#
+# my @a :foo;
+# my %h :foo;
+#
+#      <1> ex-list vK ->c
+#         <0> ex-pushmark v ->3
+#         <0> padav[@a:64,65] vM/LVINTRO ->4
+#         <1> entersub[t2] vKRS*/TARG ->c
+#            ....
+#
+# my ($x,@a,%h) :foo;
+#
+#      <;> nextstate(main 64 -e:1) v:{ ->3
+#      <@> list vKP ->w
+#         <0> pushmark vM/LVINTRO ->4
+#         <0> padsv[$x:64,65] vM/LVINTRO ->5
+#         <0> padav[@a:64,65] vM/LVINTRO ->6
+#         <0> padhv[%h:64,65] vM/LVINTRO ->7
+#         <1> entersub[t4] vKRS*/TARG ->f
+#            ....
+#         <1> entersub[t5] vKRS*/TARG ->n
+#            ....
+#         <1> entersub[t6] vKRS*/TARG ->v
+#           ....
+# where the entersub in all cases looks like
+#        <1> entersub[t2] vKRS*/TARG ->c
+#           <0> pushmark s ->5
+#           <$> const[PV "attributes"] sM ->6
+#           <$> const[PV "main"] sM ->7
+#           <1> srefgen sKM/1 ->9
+#              <1> ex-list lKRM ->8
+#                 <0> padsv[@a:64,65] sRM ->8
+#           <$> const[PV "foo"] sM ->a
+#           <.> method_named[PV "import"] ->b
+
+sub maybe_my_attr {
+    my ($self, $op, $cx) = @_;
+
+    my $kid = $op->first->sibling; # skip pushmark
+    return if class($kid) eq 'NULL';
+
+    my $lop;
+    my $type;
+
+    # Extract out all the pad ops and entersub ops into
+    # @padops and @entersubops. Return if anything else seen.
+    # Also determine what class (if any) all the pad vars belong to
+    my $class;
+    my (@padops, @entersubops);
+    for ($lop = $kid; !null($lop); $lop = $lop->sibling) {
+       my $lopname = $lop->name;
+       my $loppriv = $lop->private;
+        if ($lopname =~ /^pad[sah]v$/) {
+            return unless $loppriv & OPpLVAL_INTRO;
+            return if     $loppriv & OPpPAD_STATE;
+
+            my $padname = $self->padname_sv($lop->targ);
+            my $thisclass = ($padname->FLAGS & SVpad_TYPED)
+                                ? $padname->SvSTASH->NAME : 'main';
+
+            # all pad vars must be in the same class
+            $class //= $thisclass;
+            return unless $thisclass eq $class;
+
+            push @padops, $lop;
+        }
+        elsif ($lopname eq 'entersub') {
+            push @entersubops, $lop;
+        }
+        else {
+            return;
+        }
+    }
+
+    return unless @padops && @padops == @entersubops;
+
+    # there should be a balance: each padop has a corresponding
+    # 'attributes'->import() method call, in the same order.
+
+    my @varnames;
+    my $attr_text;
+
+    for my $i (0..$#padops) {
+        my $padop = $padops[$i];
+        my $esop  = $entersubops[$i];
+
+        push @varnames, $self->padname($padop->targ);
+
+        return unless ($esop->flags & OPf_KIDS);
+
+        my $kid = $esop->first;
+        return unless $kid->type == OP_PUSHMARK;
+
+        $kid = $kid->sibling;
+        return unless $$kid && $kid->type == OP_CONST;
+       return unless $self->const_sv($kid)->PV eq 'attributes';
+
+        $kid = $kid->sibling;
+        return unless $$kid && $kid->type == OP_CONST; # __PACKAGE__
+
+        $kid = $kid->sibling;
+        return unless  $$kid
+                    && $kid->name eq "srefgen"
+                    && ($kid->flags & OPf_KIDS)
+                    && ($kid->first->flags & OPf_KIDS)
+                    && $kid->first->first->name =~ /^pad[sah]v$/
+                    && $kid->first->first->targ == $padop->targ;
+
+        $kid = $kid->sibling;
+        my @attr;
+        while ($$kid) {
+            last if ($kid->type != OP_CONST);
+            push @attr, $self->const_sv($kid)->PV;
+            $kid = $kid->sibling;
+        }
+        return unless @attr;
+        my $thisattr = ":" . join(' ', @attr);
+        $attr_text //= $thisattr;
+        # all import calls must have the same list of attributes
+        return unless $attr_text eq $thisattr;
+
+        return unless $kid->name eq 'method_named';
+       return unless $self->meth_sv($kid)->PV eq 'import';
+
+        $kid = $kid->sibling;
+        return if $$kid;
+    }
+
+    my $res = 'my';
+    $res .= " $class " if $class ne 'main';
+    $res .=
+            (@varnames > 1)
+            ? "(" . join(', ', @varnames) . ')'
+            : " $varnames[0]";
+
+    return "$res $attr_text";
+}
+
+
 sub pp_list {
     my $self = shift;
     my($op, $cx) = @_;
+
+    {
+        # might be my ($s,@a,%h) :Foo(bar);
+        my $my_attr = maybe_my_attr($self, $op, $cx);
+        return $my_attr if defined $my_attr;
+    }
+
     my($expr, @exprs);
     my $kid = $op->first->sibling; # skip pushmark
     return '' if class($kid) eq 'NULL';
@@ -3812,6 +4001,13 @@ sub _op_is_or_was {
 
 sub pp_null {
     my($self, $op, $cx) = @_;
+
+    # might be 'my $s :Foo(bar);'
+    if ($op->targ == OP_LIST) {
+        my $my_attr = maybe_my_attr($self, $op, $cx);
+        return $my_attr if defined $my_attr;
+    }
+
     if (class($op) eq "OP") {
        # old value is lost
        return $self->{'ex_const'} if $op->targ == OP_CONST;
@@ -4319,8 +4515,9 @@ sub slice {
     } else {
        $list = $self->elem_or_slice_single_index($kid);
     }
-    my $lead = '@';
-    $lead = '%' if $op->name =~ /^kv/i;
+    my $lead = (   _op_is_or_was($op, OP_KVHSLICE)
+                || _op_is_or_was($op, OP_KVASLICE))
+               ? '%' : '@';
     return $lead . $array . $left . $list . $right;
 }
 
@@ -4807,11 +5004,33 @@ sub unback {
 
 # Remove backslashes which precede literal control characters,
 # to avoid creating ambiguity when we escape the latter.
+#
+# Don't remove a backslash from escaped whitespace: where the T represents
+# a literal tab character, /T/x is not equivalent to /\T/x
+
 sub re_unback {
     my($str) = @_;
 
     # the insane complexity here is due to the behaviour of "\c\"
-    $str =~ s/(^|[^\\]|\\c\\)(?<!\\c)\\(\\\\)*(?=[[:^print:]])/$1$2/g;
+    $str =~ s/
+                # these two lines ensure that the backslash we're about to
+                # remove isn't preceeded by something which makes it part
+                # of a \c
+
+                (^ | [^\\] | \\c\\)             # $1
+                (?<!\\c)
+
+                # the backslash to remove
+                \\
+
+                # keep pairs of backslashes
+                (\\\\)*                         # $2
+
+                # only remove if the thing following is a control char
+                (?=[[:^print:]])
+                # and not whitespace
+                (?=\S)
+            /$1$2/xg;
     return $str;
 }
 
diff --git a/lib/B/Deparse.t b/lib/B/Deparse.t
index 7eeb4f813b..57c523c6cb 100644
--- a/lib/B/Deparse.t
+++ b/lib/B/Deparse.t
@@ -63,7 +63,7 @@ while (<DATA>) {
            new B::Deparse split /,/, $meta{options}
        : $deparse;
 
-    my $coderef = eval "$meta{context};\n" . <<'EOC' . "sub {$input\n}";
+    my $code = "$meta{context};\n" . <<'EOC' . "sub {$input\n}";
 # Tell B::Deparse about our ambient pragmas
 my ($hint_bits, $warning_bits, $hinthash);
 BEGIN {
@@ -75,10 +75,14 @@ $deparse->ambient_pragmas (
     '%^H'        => $hinthash,
 );
 EOC
+    my $coderef = eval $code;
 
     local $::TODO = $meta{todo};
     if ($@) {
-       is($@, "", "compilation of $desc");
+       is($@, "", "compilation of $desc")
+            or diag "=============================================\n"
+                  . "CODE:\n--------\n$code\n--------\n"
+                  . "=============================================\n";
     }
     else {
        my $deparsed = $deparse->coderef2text( $coderef );
@@ -2610,3 +2614,50 @@ sub ($a, $=) {
     $a;
 }
 ;
+####
+# padrange op within pattern code blocks
+/(?{ my($x, $y) = (); })/;
+my $a;
+/$a(?{ my($x, $y) = (); })/;
+my $r1 = qr/(?{ my($x, $y) = (); })/;
+my $r2 = qr/$a(?{ my($x, $y) = (); })/;
+####
+# don't remove pattern whitespace escapes
+/a\ b/;
+/a\ b/x;
+/a\    b/;
+/a\    b/x;
+####
+# my attributes
+my $s1 :foo(f1, f2) bar(b1, b2);
+my @a1 :foo(f1, f2) bar(b1, b2);
+my %h1 :foo(f1, f2) bar(b1, b2);
+my($s2, @a2, %h2) :foo(f1, f2) bar(b1, b2);
+####
+# my class attributes
+package Foo::Bar;
+my Foo::Bar $s1 :foo(f1, f2) bar(b1, b2);
+my Foo::Bar @a1 :foo(f1, f2) bar(b1, b2);
+my Foo::Bar %h1 :foo(f1, f2) bar(b1, b2);
+my Foo::Bar ($s2, @a2, %h2) :foo(f1, f2) bar(b1, b2);
+package main;
+my Foo::Bar $s3 :foo(f1, f2) bar(b1, b2);
+my Foo::Bar @a3 :foo(f1, f2) bar(b1, b2);
+my Foo::Bar %h3 :foo(f1, f2) bar(b1, b2);
+my Foo::Bar ($s4, @a4, %h4) :foo(f1, f2) bar(b1, b2);
+####
+# avoid false positives in my $x :attribute
+'attributes'->import('main', \my $x1, 'foo(bar)'), my $y1;
+'attributes'->import('Fooo', \my $x2, 'foo(bar)'), my $y2;
+####
+# hash slices and hash key/value slices
+my(@a, %h);
+our(@oa, %oh);
+@a = @h{'foo', 'bar'};
+@a = %h{'foo', 'bar'};
+@a = delete @h{'foo', 'bar'};
+@a = delete %h{'foo', 'bar'};
+@oa = @oh{'foo', 'bar'};
+@oa = %oh{'foo', 'bar'};
+@oa = delete @oh{'foo', 'bar'};
+@oa = delete %oh{'foo', 'bar'};
diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm
index bb51b327f0..09931571f1 100644
--- a/lib/B/Op_private.pm
+++ b/lib/B/Op_private.pm
@@ -137,7 +137,7 @@ $bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice 
cond_expr delete enteriter en
 $bits{$_}{2} = 'OPpLVREF_ELEM' for qw(lvref refassign);
 $bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign);
 $bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem akeys aslice av2arylen 
avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av 
rv2gv rv2hv substr vec);
-$bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(padhv rv2hv);
+$bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(padhv ref rv2hv);
 $bits{$_}{7} = 'OPpOFFBYONE' for qw(caller runcv wantarray);
 $bits{$_}{5} = 'OPpOPEN_IN_CRLF' for qw(backtick open);
 $bits{$_}{4} = 'OPpOPEN_IN_RAW' for qw(backtick open);
@@ -156,7 +156,7 @@ $bits{$_}{6} = 'OPpTRANS_GROWS' for qw(trans transr);
 $bits{$_}{2} = 'OPpTRANS_IDENTICAL' for qw(trans transr);
 $bits{$_}{3} = 'OPpTRANS_SQUASH' for qw(trans transr);
 $bits{$_}{1} = 'OPpTRANS_TO_UTF' for qw(trans transr);
-$bits{$_}{5} = 'OPpTRUEBOOL' for qw(padhv rv2hv);
+$bits{$_}{5} = 'OPpTRUEBOOL' for qw(padhv ref rv2hv);
 
 my @bf = (
     {
@@ -807,7 +807,7 @@ our %ops_using = (
     OPpLVAL_INTRO            => [qw(aelem aslice cond_expr delete enteriter 
entersub gvsv helem hslice list lvavref lvref lvrefslice multideref padav padhv 
padrange padsv pushmark refassign rv2av rv2 ... [23 chars truncated]
     OPpLVREF_ELEM            => [qw(lvref refassign)],
     OPpMAYBE_LVSUB           => [qw(aassign aelem akeys aslice av2arylen 
avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av 
rv2gv rv2hv substr vec)],
-    OPpMAYBE_TRUEBOOL        => [qw(padhv rv2hv)],
+    OPpMAYBE_TRUEBOOL        => [qw(padhv ref rv2hv)],
     OPpMULTIDEREF_DELETE     => [qw(multideref)],
     OPpOFFBYONE              => [qw(caller runcv wantarray)],
     OPpOPEN_IN_CRLF          => [qw(backtick open)],
diff --git a/mg.c b/mg.c
index e50b755eca..3a2210d20f 100644
--- a/mg.c
+++ b/mg.c
@@ -638,7 +638,7 @@ Perl_magic_regdata_cnt(pTHX_ SV *sv, MAGIC *mg)
     if (PL_curpm) {
         REGEXP * const rx = PM_GETRE(PL_curpm);
        if (rx) {
-            UV uv= (UV)mg->mg_obj;
+            UV uv = (UV)mg->mg_obj;
             if (uv == '+') {          /* @+ */
                /* return the number possible */
                return RX_NPARENS(rx);
@@ -674,7 +674,7 @@ Perl_magic_regdatum_get(pTHX_ SV *sv, MAGIC *mg)
     if (PL_curpm) {
         REGEXP * const rx = PM_GETRE(PL_curpm);
        if (rx) {
-            const UV uv= (UV)mg->mg_obj;
+            const UV uv = (UV)mg->mg_obj;
             /* @{^CAPTURE} does not contain $&, so we need to increment by 1 */
             const I32 paren = mg->mg_len
                             + (uv == '\003' ? 1 : 0);
@@ -2910,10 +2910,9 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
        break;
     case '/':
         {
-            SV *tmpsv= sv;
             if (SvROK(sv)) {
-                SV *referent= SvRV(sv);
-                const char *reftype= sv_reftype(referent, 0);
+                SV *referent = SvRV(sv);
+                const char *reftype = sv_reftype(referent, 0);
                 /* XXX: dodgy type check: This leaves me feeling dirty, but
                  * the alternative is to copy pretty much the entire
                  * sv_reftype() into this routine, or to do a full string
@@ -2922,23 +2921,21 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
                  * without reviewing the corresponding comment in
                  * sv_reftype(). - Yves */
                 if (reftype[0] == 'S' || reftype[0] == 'L') {
-                    IV val= SvIV(referent);
+                    IV val = SvIV(referent);
                     if (val <= 0) {
-                        tmpsv= &PL_sv_undef;
-                        Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),
-                            "Setting $/ to a reference to %s as a form of 
slurp is deprecated, treating as undef. This will be fatal in Perl 5.28",
-                            SvIV(SvRV(sv)) < 0 ? "a negative integer" : "zero"
-                        );
+                        sv_setsv(sv, PL_rs);
+                        Perl_croak(aTHX_ "Setting $/ to a reference to %s is 
forbidden",
+                                         val < 0 ? "a negative integer" : 
"zero");
                     }
                 } else {
                     sv_setsv(sv, PL_rs);
-              /* diag_listed_as: Setting $/ to %s reference is forbidden */
+                    /* diag_listed_as: Setting $/ to %s reference is forbidden 
*/
                     Perl_croak(aTHX_ "Setting $/ to a%s %s reference is 
forbidden",
                                       *reftype == 'A' ? "n" : "", reftype);
                 }
             }
             SvREFCNT_dec(PL_rs);
-            PL_rs = newSVsv(tmpsv);
+            PL_rs = newSVsv(sv);
         }
        break;
     case '\\':
diff --git a/op.c b/op.c
index 0b687e28bc..23e1640d9a 100644
--- a/op.c
+++ b/op.c
@@ -14784,6 +14784,12 @@ Perl_rpeep(pTHX_ OP *o)
            break;
         }
 
+        case OP_REF:
+            /* see if ref() is used in boolean context */
+            if ((o->op_flags & OPf_WANT) == OPf_WANT_SCALAR)
+                S_check_for_bool_cxt(aTHX_ o, OPpTRUEBOOL, OPpMAYBE_TRUEBOOL);
+            break;
+
        case OP_CUSTOM: {
            Perl_cpeep_t cpeep = 
                XopENTRYCUSTOM(o, xop_peep);
diff --git a/opcode.h b/opcode.h
index 8fd5e79fc2..f3ba953016 100644
--- a/opcode.h
+++ b/opcode.h
@@ -2465,10 +2465,10 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
        0, /* prototype */
        0, /* refgen */
        0, /* srefgen */
-       0, /* ref */
-      47, /* bless */
-      48, /* backtick */
-      47, /* glob */
+      47, /* ref */
+      50, /* bless */
+      51, /* backtick */
+      50, /* glob */
        0, /* readline */
       -1, /* rcatline */
        0, /* regcmaybe */
@@ -2478,14 +2478,14 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
       -1, /* qr */
       -1, /* subst */
        0, /* substcont */
-      53, /* trans */
-      53, /* transr */
-      60, /* sassign */
-      63, /* aassign */
+      56, /* trans */
+      56, /* transr */
+      63, /* sassign */
+      66, /* aassign */
        0, /* chop */
        0, /* schop */
-      68, /* chomp */
-      68, /* schomp */
+      71, /* chomp */
+      71, /* schomp */
        0, /* defined */
        0, /* undef */
        0, /* study */
@@ -2498,22 +2498,22 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
        0, /* i_postinc */
        0, /* postdec */
        0, /* i_postdec */
-      70, /* pow */
-      70, /* multiply */
-      70, /* i_multiply */
-      70, /* divide */
-      70, /* i_divide */
-      70, /* modulo */
-      70, /* i_modulo */
-      72, /* repeat */
-      70, /* add */
-      70, /* i_add */
-      70, /* subtract */
-      70, /* i_subtract */
-      70, /* concat */
-      74, /* stringify */
-      70, /* left_shift */
-      70, /* right_shift */
+      73, /* pow */
+      73, /* multiply */
+      73, /* i_multiply */
+      73, /* divide */
+      73, /* i_divide */
+      73, /* modulo */
+      73, /* i_modulo */
+      75, /* repeat */
+      73, /* add */
+      73, /* i_add */
+      73, /* subtract */
+      73, /* i_subtract */
+      73, /* concat */
+      77, /* stringify */
+      73, /* left_shift */
+      73, /* right_shift */
       12, /* lt */
       12, /* i_lt */
       12, /* gt */
@@ -2538,9 +2538,9 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
       12, /* bit_and */
       12, /* bit_xor */
       12, /* bit_or */
-      70, /* nbit_and */
-      70, /* nbit_xor */
-      70, /* nbit_or */
+      73, /* nbit_and */
+      73, /* nbit_xor */
+      73, /* nbit_or */
       12, /* sbit_and */
       12, /* sbit_xor */
       12, /* sbit_or */
@@ -2548,114 +2548,114 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
        0, /* i_negate */
        0, /* not */
        0, /* complement */
-      68, /* ncomplement */
-      68, /* scomplement */
+      71, /* ncomplement */
+      71, /* scomplement */
       12, /* smartmatch */
-      74, /* atan2 */
-      68, /* sin */
-      68, /* cos */
-      74, /* rand */
-      74, /* srand */
-      68, /* exp */
-      68, /* log */
-      68, /* sqrt */
-      68, /* int */
-      68, /* hex */
-      68, /* oct */
-      68, /* abs */
-      68, /* length */
-      76, /* substr */
-      79, /* vec */
-      74, /* index */
-      74, /* rindex */
-      47, /* sprintf */
-      47, /* formline */
-      68, /* ord */
-      68, /* chr */
-      74, /* crypt */
+      77, /* atan2 */
+      71, /* sin */
+      71, /* cos */
+      77, /* rand */
+      77, /* srand */
+      71, /* exp */
+      71, /* log */
+      71, /* sqrt */
+      71, /* int */
+      71, /* hex */
+      71, /* oct */
+      71, /* abs */
+      71, /* length */
+      79, /* substr */
+      82, /* vec */
+      77, /* index */
+      77, /* rindex */
+      50, /* sprintf */
+      50, /* formline */
+      71, /* ord */
+      71, /* chr */
+      77, /* crypt */
        0, /* ucfirst */
        0, /* lcfirst */
        0, /* uc */
        0, /* lc */
        0, /* quotemeta */
-      81, /* rv2av */
-      87, /* aelemfast */
-      87, /* aelemfast_lex */
-      88, /* aelem */
-      93, /* aslice */
-      96, /* kvaslice */
+      84, /* rv2av */
+      90, /* aelemfast */
+      90, /* aelemfast_lex */
+      91, /* aelem */
+      96, /* aslice */
+      99, /* kvaslice */
        0, /* aeach */
        0, /* avalues */
       38, /* akeys */
        0, /* each */
        0, /* values */
       38, /* keys */
-      97, /* delete */
-     101, /* exists */
-     103, /* rv2hv */
-      88, /* helem */
-      93, /* hslice */
-      96, /* kvhslice */
-     111, /* multideref */
-      47, /* unpack */
-      47, /* pack */
-     118, /* split */
-      47, /* join */
-     123, /* list */
+     100, /* delete */
+     104, /* exists */
+     106, /* rv2hv */
+      91, /* helem */
+      96, /* hslice */
+      99, /* kvhslice */
+     114, /* multideref */
+      50, /* unpack */
+      50, /* pack */
+     121, /* split */
+      50, /* join */
+     126, /* list */
       12, /* lslice */
-      47, /* anonlist */
-      47, /* anonhash */
-      47, /* splice */
-      74, /* push */
+      50, /* anonlist */
+      50, /* anonhash */
+      50, /* splice */
+      77, /* push */
        0, /* pop */
        0, /* shift */
-      74, /* unshift */
-     125, /* sort */
-     132, /* reverse */
+      77, /* unshift */
+     128, /* sort */
+     135, /* reverse */
        0, /* grepstart */
        0, /* grepwhile */
        0, /* mapstart */
        0, /* mapwhile */
        0, /* range */
-     134, /* flip */
-     134, /* flop */
+     137, /* flip */
+     137, /* flop */
        0, /* and */
        0, /* or */
       12, /* xor */
        0, /* dor */
-     136, /* cond_expr */
+     139, /* cond_expr */
        0, /* andassign */
        0, /* orassign */
        0, /* dorassign */
        0, /* method */
-     138, /* entersub */
-     145, /* leavesub */
-     145, /* leavesublv */
+     141, /* entersub */
+     148, /* leavesub */
+     148, /* leavesublv */
        0, /* argcheck */
-     147, /* argelem */
+     150, /* argelem */
        0, /* argdefelem */
-     149, /* caller */
-      47, /* warn */
-      47, /* die */
-      47, /* reset */
+     152, /* caller */
+      50, /* warn */
+      50, /* die */
+      50, /* reset */
       -1, /* lineseq */
-     151, /* nextstate */
-     151, /* dbstate */
+     154, /* nextstate */
+     154, /* dbstate */
       -1, /* unstack */
       -1, /* enter */
-     152, /* leave */
+     155, /* leave */
       -1, /* scope */
-     154, /* enteriter */
-     158, /* iter */
+     157, /* enteriter */
+     161, /* iter */
       -1, /* enterloop */
-     159, /* leaveloop */
+     162, /* leaveloop */
       -1, /* return */
-     161, /* last */
-     161, /* next */
-     161, /* redo */
-     161, /* dump */
-     161, /* goto */
-      47, /* exit */
+     164, /* last */
+     164, /* next */
+     164, /* redo */
+     164, /* dump */
+     164, /* goto */
+      50, /* exit */
        0, /* method_named */
        0, /* method_super */
        0, /* method_redir */
@@ -2666,143 +2666,143 @@ EXTCONST I16  PL_op_private_bitdef_ix[] = {
        0, /* leavewhen */
       -1, /* break */
       -1, /* continue */
-     163, /* open */
-      47, /* close */
-      47, /* pipe_op */
-      47, /* fileno */
-      47, /* umask */
-      47, /* binmode */
-      47, /* tie */
+     166, /* open */
+      50, /* close */
+      50, /* pipe_op */
+      50, /* fileno */
+      50, /* umask */
+      50, /* binmode */
+      50, /* tie */
        0, /* untie */
        0, /* tied */
-      47, /* dbmopen */
+      50, /* dbmopen */
        0, /* dbmclose */
-      47, /* sselect */
-      47, /* select */
-      47, /* getc */
-      47, /* read */
-      47, /* enterwrite */
-     145, /* leavewrite */
+      50, /* sselect */
+      50, /* select */
+      50, /* getc */
+      50, /* read */
+      50, /* enterwrite */
+     148, /* leavewrite */
       -1, /* prtf */
       -1, /* print */
       -1, /* say */
-      47, /* sysopen */
-      47, /* sysseek */
-      47, /* sysread */
-      47, /* syswrite */
-      47, /* eof */
-      47, /* tell */
-      47, /* seek */
-      47, /* truncate */
-      47, /* fcntl */
-      47, /* ioctl */
-      74, /* flock */
-      47, /* send */
-      47, /* recv */
-      47, /* socket */
-      47, /* sockpair */
-      47, /* bind */
-      47, /* connect */
-      47, /* listen */
-      47, /* accept */
-      47, /* shutdown */
-      47, /* gsockopt */
-      47, /* ssockopt */
+      50, /* sysopen */
+      50, /* sysseek */
+      50, /* sysread */
+      50, /* syswrite */
+      50, /* eof */
+      50, /* tell */
+      50, /* seek */
+      50, /* truncate */
+      50, /* fcntl */
+      50, /* ioctl */
+      77, /* flock */
+      50, /* send */
+      50, /* recv */
+      50, /* socket */
+      50, /* sockpair */
+      50, /* bind */
+      50, /* connect */
+      50, /* listen */
+      50, /* accept */
+      50, /* shutdown */
+      50, /* gsockopt */
+      50, /* ssockopt */
        0, /* getsockname */
        0, /* getpeername */
        0, /* lstat */
        0, /* stat */
-     168, /* ftrread */
-     168, /* ftrwrite */
-     168, /* ftrexec */
-     168, /* fteread */
-     168, /* ftewrite */
-     168, /* fteexec */
-     173, /* ftis */
-     173, /* ftsize */
-     173, /* ftmtime */
-     173, /* ftatime */
-     173, /* ftctime */
-     173, /* ftrowned */
-     173, /* fteowned */
-     173, /* ftzero */
-     173, /* ftsock */
-     173, /* ftchr */
-     173, /* ftblk */
-     173, /* ftfile */
-     173, /* ftdir */
-     173, /* ftpipe */
-     173, /* ftsuid */
-     173, /* ftsgid */
-     173, /* ftsvtx */
-     173, /* ftlink */
-     173, /* fttty */
-     173, /* fttext */
-     173, /* ftbinary */
-      74, /* chdir */
-      74, /* chown */
-      68, /* chroot */
-      74, /* unlink */
-      74, /* chmod */
-      74, /* utime */
-      74, /* rename */
-      74, /* link */
-      74, /* symlink */
+     171, /* ftrread */
+     171, /* ftrwrite */
+     171, /* ftrexec */
+     171, /* fteread */
+     171, /* ftewrite */
+     171, /* fteexec */
+     176, /* ftis */
+     176, /* ftsize */
+     176, /* ftmtime */
+     176, /* ftatime */
+     176, /* ftctime */
+     176, /* ftrowned */
+     176, /* fteowned */
+     176, /* ftzero */
+     176, /* ftsock */
+     176, /* ftchr */
+     176, /* ftblk */
+     176, /* ftfile */
+     176, /* ftdir */
+     176, /* ftpipe */
+     176, /* ftsuid */
+     176, /* ftsgid */
+     176, /* ftsvtx */
+     176, /* ftlink */
+     176, /* fttty */
+     176, /* fttext */
+     176, /* ftbinary */
+      77, /* chdir */
+      77, /* chown */
+      71, /* chroot */
+      77, /* unlink */
+      77, /* chmod */
+      77, /* utime */
+      77, /* rename */
+      77, /* link */
+      77, /* symlink */
        0, /* readlink */
-      74, /* mkdir */
-      68, /* rmdir */
-      47, /* open_dir */
+      77, /* mkdir */
+      71, /* rmdir */
+      50, /* open_dir */
        0, /* readdir */
**** PATCH TRUNCATED AT 2000 LINES -- 1465 NOT SHOWN ****

--
Perl5 Master Repository

Reply via email to