In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/10d36cf9c1885126580478a10462ed672361059e?hp=1b1e331d7fece38c48963c1a9e4c45bc227b0ce6>

- Log -----------------------------------------------------------------
commit 10d36cf9c1885126580478a10462ed672361059e
Author: reneeb <git...@renee-baecker.de>
Date:   Wed Apr 27 16:00:02 2016 +0200

    perllol: remove docs about the removed autoderef feature

M       pod/perllol.pod
M       pod/perlref.pod

commit 1a8aefec218b12053a0d3589cae2c353c1360887
Author: Ricardo Signes <r...@cpan.org>
Date:   Sat Apr 30 14:32:31 2016 -0400

    corelist: updated for threads libraries

M       dist/Module-CoreList/lib/Module/CoreList.pm

commit 420b56457b0b355e6217ebacfd48de54a26f0c84
Author: Ricardo Signes <r...@cpan.org>
Date:   Sat Apr 30 14:53:22 2016 -0400

    Thread-Queue: bump version (again) because content changed

M       dist/Thread-Queue/lib/Thread/Queue.pm

commit ca463a05f8c5a513ebcd09ee1fed6df729073c55
Author: Ricardo Signes <r...@cpan.org>
Date:   Sat Apr 30 14:52:02 2016 -0400

    threads: bump version (again) because content changed

M       dist/threads/lib/threads.pm
M       dist/threads/t/exit.t
M       dist/threads/t/thread.t

commit bb9879d35229986a0345a5f7ea8c84a85fe09fb1
Author: jdhedden <jdhed...@cpan.org>
Date:   Fri Apr 22 16:13:10 2016 -0400

    Upgrade to Thread::Queue 3.08

M       Porting/Maintainers.pl
M       dist/Thread-Queue/lib/Thread/Queue.pm

commit 3cfebacc8397adeec781a138c311ff4f37e5b601
Author: jdhedden <jdhed...@cpan.org>
Date:   Fri Apr 22 19:23:01 2016 -0400

    Upgrade to threads::shared 1.51

M       Porting/Maintainers.pl
M       dist/threads-shared/lib/threads/shared.pm
M       dist/threads-shared/shared.xs

commit d9262b38948c21dc22d00f0f094ad37ee3b98430
Author: jdhedden <jdhed...@cpan.org>
Date:   Fri Apr 22 14:28:09 2016 -0400

    Upgrade to threads 2.06

M       Porting/Maintainers.pl
M       dist/threads/lib/threads.pm
M       dist/threads/t/exit.t
M       dist/threads/t/thread.t
M       dist/threads/threads.xs

commit 8a355c193e75b3d8ec3222d4e11e62b945626cb8
Author: Ricardo Signes <r...@cpan.org>
Date:   Sat Apr 30 14:26:42 2016 -0400

    corelist: updated for File::Copy doc updates

M       dist/Module-CoreList/lib/Module/CoreList.pm
-----------------------------------------------------------------------

Summary of changes:
 Porting/Maintainers.pl                      |  6 ++--
 dist/Module-CoreList/lib/Module/CoreList.pm |  4 +++
 dist/Thread-Queue/lib/Thread/Queue.pm       | 54 ++++++++++++++---------------
 dist/threads-shared/lib/threads/shared.pm   | 15 ++++++--
 dist/threads-shared/shared.xs               | 14 --------
 dist/threads/lib/threads.pm                 | 19 +++++-----
 dist/threads/t/exit.t                       | 10 +++---
 dist/threads/t/thread.t                     |  2 +-
 dist/threads/threads.xs                     | 28 +++++++--------
 lib/File/Copy.pm                            | 10 +++++-
 pod/perl.pod                                |  3 ++
 pod/perlfunc.pod                            |  3 +-
 pod/perllol.pod                             | 41 +---------------------
 pod/perlref.pod                             |  7 ----
 pod/perlrun.pod                             |  7 ++--
 15 files changed, 95 insertions(+), 128 deletions(-)

diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index d861ccb..7009713 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -1163,7 +1163,7 @@ use File::Glob qw(:case);
     # correct for this (and Thread::Semaphore, threads, and threads::shared)
     # to be under dist/ rather than cpan/
     'Thread::Queue' => {
-        'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.07.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.08.tar.gz',
         'FILES'        => q[dist/Thread-Queue],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -1187,7 +1187,7 @@ use File::Glob qw(:case);
     },
 
     'threads' => {
-        'DISTRIBUTION' => 'JDHEDDEN/threads-2.02.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/threads-2.06.tar.gz',
         'FILES'        => q[dist/threads],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -1199,7 +1199,7 @@ use File::Glob qw(:case);
     },
 
     'threads::shared' => {
-        'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.48.tar.gz',
+        'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.51.tar.gz',
         'FILES'        => q[dist/threads-shared],
         'EXCLUDED'     => [
             qw( examples/class.pl
diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm 
b/dist/Module-CoreList/lib/Module/CoreList.pm
index 54966ff..e39cf87 100644
--- a/dist/Module-CoreList/lib/Module/CoreList.pm
+++ b/dist/Module-CoreList/lib/Module/CoreList.pm
@@ -12388,6 +12388,7 @@ for my $version ( sort { $a <=> $b } keys %released ) {
         changed => {
             'B::Op_private'         => '5.024000',
             'Config'                => '5.024',
+            'File::Copy'            => '2.31',
             'File::Path'            => '2.12_01',
             'File::Spec::AmigaOS'   => '3.64',
             'ODBM_File'             => '1.14',
@@ -12398,7 +12399,10 @@ for my $version ( sort { $a <=> $b } keys %released ) {
             'Pod::Text::Color'      => '4.07',
             'Pod::Text::Overstrike' => '4.07',
             'Pod::Text::Termcap'    => '4.07',
+            'Threads::Queue'        => '3.09',
             'Time::HiRes'           => '1.9733',
+            'threads'               => '2.07',
+            'threads::shared'       => '1.51',
         },
         removed => {
         }
diff --git a/dist/Thread-Queue/lib/Thread/Queue.pm 
b/dist/Thread-Queue/lib/Thread/Queue.pm
index f1a08c7..2f87eed 100644
--- a/dist/Thread-Queue/lib/Thread/Queue.pm
+++ b/dist/Thread-Queue/lib/Thread/Queue.pm
@@ -3,7 +3,7 @@ package Thread::Queue;
 use strict;
 use warnings;
 
-our $VERSION = '3.08';
+our $VERSION = '3.09';
 $VERSION = eval $VERSION;
 
 use threads::shared 1.21;
@@ -304,7 +304,7 @@ Thread::Queue - Thread-safe queues
 
 =head1 VERSION
 
-This document describes Thread::Queue version 3.07
+This document describes Thread::Queue version 3.09
 
 =head1 SYNOPSIS
 
@@ -393,20 +393,20 @@ shared array reference via C<&shared([])>, copy the 
elements 'foo', 'bar'
 and 'baz' from C<@ary> into it, and then place that shared reference onto
 the queue:
 
-    my @ary = qw/foo bar baz/;
-    $q->enqueue(\@ary);
+ my @ary = qw/foo bar baz/;
+ $q->enqueue(\@ary);
 
 However, for the following, the items are already shared, so their references
 are added directly to the queue, and no cloning takes place:
 
-    my @ary :shared = qw/foo bar baz/;
-    $q->enqueue(\@ary);
+ my @ary :shared = qw/foo bar baz/;
+ $q->enqueue(\@ary);
 
-    my $obj = &shared({});
-    $$obj{'foo'} = 'bar';
-    $$obj{'qux'} = 99;
-    bless($obj, 'My::Class');
-    $q->enqueue($obj);
+ my $obj = &shared({});
+ $$obj{'foo'} = 'bar';
+ $$obj{'qux'} = 99;
+ bless($obj, 'My::Class');
+ $q->enqueue($obj);
 
 See L</"LIMITATIONS"> for caveats related to passing objects via queues.
 
@@ -546,18 +546,18 @@ Adds the list of items to the queue at the specified 
index position (0
 is the head of the list).  Any existing items at and beyond that position are
 pushed back past the newly added items:
 
-    $q->enqueue(1, 2, 3, 4);
-    $q->insert(1, qw/foo bar/);
-    # Queue now contains:  1, foo, bar, 2, 3, 4
+ $q->enqueue(1, 2, 3, 4);
+ $q->insert(1, qw/foo bar/);
+ # Queue now contains:  1, foo, bar, 2, 3, 4
 
 Specifying an index position greater than the number of items in the queue
 just adds the list to the end.
 
 Negative index positions are supported:
 
-    $q->enqueue(1, 2, 3, 4);
-    $q->insert(-2, qw/foo bar/);
-    # Queue now contains:  1, 2, foo, bar, 3, 4
+ $q->enqueue(1, 2, 3, 4);
+ $q->insert(-2, qw/foo bar/);
+ # Queue now contains:  1, 2, foo, bar, 3, 4
 
 Specifying a negative index position greater than the number of items in the
 queue adds the list to the head of the queue.
@@ -575,18 +575,18 @@ called with no arguments, C<extract> operates the same as 
C<dequeue_nb>.
 This method is non-blocking, and will return only as many items as are
 available to fulfill the request:
 
-    $q->enqueue(1, 2, 3, 4);
-    my $item  = $q->extract(2)     # Returns 3
-                                   # Queue now contains:  1, 2, 4
-    my @items = $q->extract(1, 3)  # Returns (2, 4)
-                                   # Queue now contains:  1
+ $q->enqueue(1, 2, 3, 4);
+ my $item  = $q->extract(2)     # Returns 3
+                                # Queue now contains:  1, 2, 4
+ my @items = $q->extract(1, 3)  # Returns (2, 4)
+                                # Queue now contains:  1
 
 Specifying an index position greater than the number of items in the
 queue results in C<undef> or an empty list being returned.
 
-    $q->enqueue('foo');
-    my $nada = $q->extract(3)      # Returns undef
-    my @nada = $q->extract(1, 3)   # Returns ()
+ $q->enqueue('foo');
+ my $nada = $q->extract(3)      # Returns undef
+ my @nada = $q->extract(1, 3)   # Returns ()
 
 Negative index positions are supported.  Specifying a negative index position
 greater than the number of items in the queue may return items from the head
@@ -598,8 +598,8 @@ greater than zero):
  my @nada = $q->extract(-6, 2);  # Returns ()      - (3+(-6)+2) <= 0
  my @some = $q->extract(-6, 4);  # Returns (foo)   - (3+(-6)+4) > 0
                                  # Queue now contains:  bar, baz
- my @rest = $q->extract(-3, 4);  # Returns
-                                 #       (bar, baz) - (2+(-3)+4) > 0
+ my @rest = $q->extract(-3, 4);  # Returns (bar, baz) -
+                                 #                   (2+(-3)+4) > 0
 
 =back
 
diff --git a/dist/threads-shared/lib/threads/shared.pm 
b/dist/threads-shared/lib/threads/shared.pm
index dc76ab2..89a79a4 100644
--- a/dist/threads-shared/lib/threads/shared.pm
+++ b/dist/threads-shared/lib/threads/shared.pm
@@ -7,7 +7,7 @@ use warnings;
 
 use Scalar::Util qw(reftype refaddr blessed);
 
-our $VERSION = '1.50'; # Please update the pod, too.
+our $VERSION = '1.51'; # Please update the pod, too.
 my $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -195,7 +195,7 @@ threads::shared - Perl extension for sharing data 
structures between threads
 
 =head1 VERSION
 
-This document describes threads::shared version 1.48
+This document describes threads::shared version 1.51
 
 =head1 SYNOPSIS
 
@@ -558,6 +558,17 @@ they contain will be lost.
 Therefore, populate such variables B<after> declaring them as shared.  (Scalar
 and scalar refs are not affected by this problem.)
 
+Blessing a shared item after it has been nested in another shared item does
+not propagate the blessing to the shared reference:
+
+  my $foo = &share({});
+  my $bar = &share({});
+  $bar->{foo} = $foo;
+  bless($foo, 'baz');   # $foo is now of class 'baz',
+                        # but $bar->{foo} is unblessed.
+
+Therefore, you should bless objects before sharing them.
+
 It is often not wise to share an object unless the class itself has been
 written to support sharing.  For example, an object's destructor may get
 called multiple times, once for each thread's scope exit.  Another danger is
diff --git a/dist/threads-shared/shared.xs b/dist/threads-shared/shared.xs
index e323788..a019732 100644
--- a/dist/threads-shared/shared.xs
+++ b/dist/threads-shared/shared.xs
@@ -1166,20 +1166,6 @@ const MGVTBL sharedsv_array_vtbl = {
 };
 
 
-#if 0
-/* XXX unused dead code */
-/* Recursively unlocks a shared sv. */
-
-static void
-Perl_sharedsv_unlock(pTHX_ SV *ssv)
-{
-    user_lock *ul = S_get_userlock(aTHX_ ssv, 0);
-    assert(ul);
-    recursive_lock_release(aTHX_ &ul->lock);
-}
-#endif
-
-
 /* Recursive locks on a sharedsv.
  * Locks are dynamically scoped at the level of the first lock.
  */
diff --git a/dist/threads/lib/threads.pm b/dist/threads/lib/threads.pm
index f4dee58..39761be 100644
--- a/dist/threads/lib/threads.pm
+++ b/dist/threads/lib/threads.pm
@@ -5,7 +5,7 @@ use 5.008;
 use strict;
 use warnings;
 
-our $VERSION = '2.06';
+our $VERSION = '2.07';
 my $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -134,7 +134,7 @@ threads - Perl interpreter-based threads
 
 =head1 VERSION
 
-This document describes threads version 2.02
+This document describes threads version 2.07
 
 =head1 WARNING
 
@@ -363,10 +363,10 @@ If you add the C<stringify> import option to your C<use 
threads> declaration,
 then using a threads object in a string or a string context (e.g., as a hash
 key) will cause its ID to be used as the value:
 
- use threads qw(stringify);
+    use threads qw(stringify);
 
- my $thr = threads->create(...);
- print("Thread $thr started...\n"); # Prints: Thread 1 started...
+    my $thr = threads->create(...);
+    print("Thread $thr started\n");  # Prints: Thread 1 started
 
 =item threads->object($tid)
 
@@ -691,16 +691,17 @@ threaded applications.
 To specify a particular stack size for any individual thread, call
 C<-E<gt>create()> with a hash reference as the first argument:
 
- my $thr = threads->create({'stack_size' => 32*4096}, \&foo, @args);
+    my $thr = threads->create({'stack_size' => 32*4096},
+                              \&foo, @args);
 
 =item $thr2 = $thr1->create(FUNCTION, ARGS)
 
 This creates a new thread (C<$thr2>) that inherits the stack size from an
 existing thread (C<$thr1>).  This is shorthand for the following:
 
- my $stack_size = $thr1->get_stack_size();
- my $thr2 = threads->create({'stack_size' => $stack_size},
-                            FUNCTION, ARGS);
+    my $stack_size = $thr1->get_stack_size();
+    my $thr2 = threads->create({'stack_size' => $stack_size},
+                               FUNCTION, ARGS);
 
 =back
 
diff --git a/dist/threads/t/exit.t b/dist/threads/t/exit.t
index 908f52c..16d7a7a 100644
--- a/dist/threads/t/exit.t
+++ b/dist/threads/t/exit.t
@@ -48,7 +48,7 @@ my $rc = $thr->join();
 ok(! defined($rc), 'Exited: threads->exit()');
 
 
-run_perl(prog => 'use threads 2.02;' .
+run_perl(prog => 'use threads 2.07;' .
                  'threads->exit(86);' .
                  'exit(99);',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -98,7 +98,7 @@ $rc = $thr->join();
 ok(! defined($rc), 'Exited: $thr->set_thread_exit_only');
 
 
-run_perl(prog => 'use threads 2.02 qw(exit thread_only);' .
+run_perl(prog => 'use threads 2.07 qw(exit thread_only);' .
                  'threads->create(sub { exit(99); })->join();' .
                  'exit(86);',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
@@ -108,7 +108,7 @@ run_perl(prog => 'use threads 2.02 qw(exit thread_only);' .
     is($?>>8, 86, "'use threads 'exit' => 'thread_only'");
 }
 
-my $out = run_perl(prog => 'use threads 2.02;' .
+my $out = run_perl(prog => 'use threads 2.07;' .
                            'threads->create(sub {' .
                            '    exit(99);' .
                            '});' .
@@ -124,7 +124,7 @@ my $out = run_perl(prog => 'use threads 2.02;' .
 like($out, qr/1 finished and unjoined/, "exit(status) in thread");
 
 
-$out = run_perl(prog => 'use threads 2.02 qw(exit thread_only);' .
+$out = run_perl(prog => 'use threads 2.07 qw(exit thread_only);' .
                         'threads->create(sub {' .
                         '   threads->set_thread_exit_only(0);' .
                         '   exit(99);' .
@@ -141,7 +141,7 @@ $out = run_perl(prog => 'use threads 2.02 qw(exit 
thread_only);' .
 like($out, qr/1 finished and unjoined/, "set_thread_exit_only(0)");
 
 
-run_perl(prog => 'use threads 2.02;' .
+run_perl(prog => 'use threads 2.07;' .
                  'threads->create(sub {' .
                  '   $SIG{__WARN__} = sub { exit(99); };' .
                  '   die();' .
diff --git a/dist/threads/t/thread.t b/dist/threads/t/thread.t
index 56087f3..4628b27 100644
--- a/dist/threads/t/thread.t
+++ b/dist/threads/t/thread.t
@@ -161,7 +161,7 @@ package main;
 
 # bugid #24165
 
-run_perl(prog => 'use threads 2.02;' .
+run_perl(prog => 'use threads 2.07;' .
                  'sub a{threads->create(shift)} $t = a sub{};' .
                  '$t->tid; $t->join; $t->tid',
          nolib => ($ENV{PERL_CORE}) ? 0 : 1,
diff --git a/dist/threads/threads.xs b/dist/threads/threads.xs
index d35eee1..5f52192 100644
--- a/dist/threads/threads.xs
+++ b/dist/threads/threads.xs
@@ -20,13 +20,12 @@
 #endif
 #ifdef HAS_PPPORT_H
 #  define NEED_PL_signals
-#  define NEED_newRV_noinc
 #  define NEED_sv_2pv_flags
 #  include "ppport.h"
 #  include "threads.h"
 #endif
 #ifndef sv_dup_inc
-#  define sv_dup_inc(s,t)      SvREFCNT_inc(sv_dup(s,t))
+#  define sv_dup_inc(s,t) SvREFCNT_inc(sv_dup(s,t))
 #endif
 #ifndef PERL_UNUSED_RESULT
 #  if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT)
@@ -476,13 +475,13 @@ S_good_stack_size(pTHX_ IV stack_size)
     return (stack_size);
 }
 
-/* run some code within a JMPENV environment.
- * Having it in a separate small function helps avoid
- * 'variable ‘foo’ might be clobbered by ‘longjmp’
+
+/* Run code within a JMPENV environment.
+ * Using a separate function avoids
+ *   "variable 'foo' might be clobbered by 'longjmp'"
  * warnings.
  * The three _p vars return values to the caller
  */
-
 static int
 S_jmpenv_run(pTHX_ int action, ithread *thread,
              int *len_p, int *exit_app_p, int *exit_code_p)
@@ -496,12 +495,10 @@ S_jmpenv_run(pTHX_ int action, ithread *thread,
         if (action == 0) {
             /* Run the specified function */
             *len_p = (int)call_sv(thread->init_function, thread->gimme|G_EVAL);
-        }
-        else if (action == 1) {
+        } else if (action == 1) {
             /* Warn that thread died */
             Perl_warn(aTHX_ "Thread %" UVuf " terminated abnormally: %" SVf, 
thread->tid, ERRSV);
-        }
-        else {
+        } else {
             /* Warn if there are unjoined threads */
             S_exit_warning(aTHX);
         }
@@ -1018,8 +1015,9 @@ S_ithread_create(
     my_pool->running_threads++;
     MUTEX_UNLOCK(&my_pool->create_destruct_mutex);
     return (thread);
-CLANG_DIAG_IGNORE(-Wthread-safety);
-/* warning: mutex 'thread->mutex' is not held on every path through here 
[-Wthread-safety-analysis] */
+
+    CLANG_DIAG_IGNORE(-Wthread-safety);
+    /* warning: mutex 'thread->mutex' is not held on every path through here 
[-Wthread-safety-analysis] */
 }
 #if defined(__clang__) || defined(__clang)
 CLANG_DIAG_RESTORE;
@@ -1161,10 +1159,10 @@ ithread_create(...)
 
         /* Let thread run. */
         /* See S_ithread_run() for more detail. */
-       CLANG_DIAG_IGNORE(-Wthread-safety);
-       /* warning: releasing mutex 'thread->mutex' that was not held 
[-Wthread-safety-analysis] */
+        CLANG_DIAG_IGNORE(-Wthread-safety);
+        /* warning: releasing mutex 'thread->mutex' that was not held 
[-Wthread-safety-analysis] */
         MUTEX_UNLOCK(&thread->mutex);
-       CLANG_DIAG_RESTORE;
+        CLANG_DIAG_RESTORE;
 
         /* XSRETURN(1); - implied */
 
diff --git a/lib/File/Copy.pm b/lib/File/Copy.pm
index 95fb4e1..842bd31 100644
--- a/lib/File/Copy.pm
+++ b/lib/File/Copy.pm
@@ -22,7 +22,7 @@ sub syscopy;
 sub cp;
 sub mv;
 
-$VERSION = '2.30';
+$VERSION = '2.31';
 
 require Exporter;
 @ISA = qw(Exporter);
@@ -489,6 +489,14 @@ it sets C<$!>, deletes the output file, and returns 0.
 All functions return 1 on success, 0 on failure.
 $! will be set if an error was encountered.
 
+=head1 NOTES
+
+Before calling copy() or move() on a filehandle, the caller should
+close or flush() the file to avoid writes being lost. Note that this
+is the case even for move(), because it may actually copy the file,
+depending on the OS-specific inplementation, and the underlying
+filesystem(s).
+
 =head1 AUTHOR
 
 File::Copy was written by Aaron Sherman I<E<lt>a...@ajs.come<gt>> in 1995,
diff --git a/pod/perl.pod b/pod/perl.pod
index f6b7d79..181e7ca 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -350,6 +350,9 @@ Perl developers, please write to perl-tha...@perl.org .
 
  "@INC"                        locations of perl libraries
 
+"@INC" above is a reference to the built-in variable of the same name;
+see L<perlvar> for more information.
+
 =head1 SEE ALSO
 
  http://www.perl.org/       the Perl homepage
diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod
index 18d2e40..e9c7038 100644
--- a/pod/perlfunc.pod
+++ b/pod/perlfunc.pod
@@ -6630,7 +6630,8 @@ is the moral equivalent of these two:
     foo();
     print(uc($bar), $baz);
 
-See L<perlop> for more details on unary operators and the comma operator.
+See L<perlop> for more details on unary operators and the comma operator,
+and L<perldata> for details on evaluating a hash in scalar contex.
 
 =item seek FILEHANDLE,POSITION,WHENCE
 X<seek> X<fseek> X<filehandle, position>
diff --git a/pod/perllol.pod b/pod/perllol.pod
index 7eee1ec..b3defad 100644
--- a/pod/perllol.pod
+++ b/pod/perllol.pod
@@ -170,45 +170,6 @@ to do something a bit funnier looking:
     # add new columns to an existing row
     push @{ $AoA[0] }, "wilma", "betty";   # explicit deref
 
-Prior to Perl 5.14, this wouldn't even compile:
-
-    push $AoA[0], "wilma", "betty";        # implicit deref
-
-How come?  Because once upon a time, the argument to push() had to be a
-real array, not just a reference to one. That's no longer true.  In fact,
-the line marked "implicit deref" above works just fine--in this
-instance--to do what the one that says explicit deref did.
-
-The reason I said "in this instance" is because that I<only> works
-because C<$AoA[0]> already held an array reference.  If you try that on an
-undefined variable, you'll take an exception.  That's because the implicit
-derefererence will never autovivify an undefined variable the way C<@{ }>
-always will:
-
-    my $aref = undef;
-    push $aref,  qw(some more values);  # WRONG!
-    push @$aref, qw(a few more);        # ok
-
-If you want to take advantage of this new implicit dereferencing behavior,
-go right ahead: it makes code easier on the eye and wrist.  Just understand
-that older releases will choke on it during compilation.  Whenever you make
-use of something that works only in some given release of Perl and later,
-but not earlier, you should place a prominent
-
-    use v5.14;   # needed for implicit deref of array refs by array ops
-
-directive at the top of the file that needs it.  That way when somebody
-tries to run the new code under an old perl, rather than getting an error like
-
-    Type of arg 1 to push must be array (not array element) at /tmp/a
-    line 8, near ""betty";"
-    Execution of /tmp/a aborted due to compilation errors.
-
-they'll be politely informed that
-
- Perl v5.14.0 required--this is only v5.12.3, stopped at /tmp/a line 1.
- BEGIN failed--compilation aborted at /tmp/a line 1.
-
 =head2 Access and Printing
 
 Now it's time to print your data structure out.  How
@@ -291,7 +252,7 @@ parsable Perl code.  For example:
           [ "george", "jane", "elroy" ],
           [ "homer", "marge", "bart" ],
  );
- push $AoA[0], "wilma", "betty";
+ push @{ $AoA[0] }, "wilma", "betty";
  show @AoA;
 
 will print out:
diff --git a/pod/perlref.pod b/pod/perlref.pod
index e64abe4..8959ba5 100644
--- a/pod/perlref.pod
+++ b/pod/perlref.pod
@@ -51,13 +51,6 @@ When a scalar is holding a reference, it always behaves as a 
simple scalar.
 It doesn't magically start being an array or hash or subroutine; you have to
 tell it explicitly to do so, by dereferencing it.
 
-That said, be aware that Perl version 5.14 introduces an exception
-to the rule, for syntactic convenience.  Experimental array and hash container
-function behavior allows array and hash references to be handled by Perl as
-if they had been explicitly syntactically dereferenced.  See
-L<perl5140delta/"Syntactical Enhancements">
-and L<perlfunc> for details.
-
 =head2 Making References
 X<reference, creation> X<referencing>
 
diff --git a/pod/perlrun.pod b/pod/perlrun.pod
index 1ff3ce2..e454bf8 100644
--- a/pod/perlrun.pod
+++ b/pod/perlrun.pod
@@ -706,9 +706,10 @@ at least a week:
     find . -mtime +7 -print | perl -nle unlink
 
 This is faster than using the B<-exec> switch of I<find> because you don't
-have to start a process on every filename found.  It does suffer from
-the bug of mishandling newlines in pathnames, which you can fix if
-you follow the example under B<-0>.
+have to start a process on every filename found (but it's not faster
+than using the B<-delete> switch available in newer versions of I<find>.
+It does suffer from the bug of mishandling newlines in pathnames, which
+you can fix if you follow the example under B<-0>.
 
 C<BEGIN> and C<END> blocks may be used to capture control before or after
 the implicit program loop, just as in I<awk>.

--
Perl5 Master Repository

Reply via email to