This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlsub: scalar split no longer clobbers @_ (RT #129297)
authorLukas Mai <l.mai@web.de>
Sun, 18 Sep 2016 07:50:16 +0000 (09:50 +0200)
committerLukas Mai <l.mai@web.de>
Sun, 18 Sep 2016 07:52:00 +0000 (09:52 +0200)
pod/perlsub.pod

index f15f9ce..434bb8c 100644 (file)
@@ -1582,14 +1582,14 @@ and someone has been calling it with an array or expression
 returning a list:
 
     func(@foo);
-    func( split /:/ );
+    func( $text =~ /\w+/g );
 
 Then you've just supplied an automatic C<scalar> in front of their
 argument, which can be more than a bit surprising.  The old C<@foo>
 which used to hold one thing doesn't get passed in.  Instead,
 C<func()> now gets passed in a C<1>; that is, the number of elements
-in C<@foo>.  And the C<split> gets called in scalar context so it
-starts scribbling on your C<@_> parameter list.  Ouch!
+in C<@foo>.  And the C<m//g> gets called in scalar context so instead of a
+list of words it returns a boolean result and advances C<pos($text)>.  Ouch!
 
 If a sub has both a PROTO and a BLOCK, the prototype is not applied
 until after the BLOCK is completely defined.  This means that a recursive