Re: 5.6 bug: split /^/ implies /m modifier (from CLPM)
Robin Barker [Mon, 27 Nov 2000 17:56:44 +0000 (17:56 +0000)]
Message-Id: <200011271756.RAA22706@tempest.npl.co.uk>

p4raw-id: //depot/perl@7902

pod/perlfunc.pod
t/op/split.t

index ec0fe08..f2bf51e 100644 (file)
@@ -4375,6 +4375,15 @@ characters at each point it matches that way.  For example:
 
 produces the output 'h:i:t:h:e:r:e'.
 
+Empty leading (or trailing) fields are produced when there positive width
+matches at the beginning (or end) of the string; a zero-width match at the
+beginning (or end) of the string does not produce an empty field.  For
+example:
+
+   print join(':', split(/(?=\w)/, 'hi there!'));
+
+produces the output 'h:i :t:h:e:r:e!'.
+
 The LIMIT parameter can be used to split a line partially
 
     ($login, $passwd, $remainder) = split(/:/, $_, 3);
index 45df76a..9a6586d 100755 (executable)
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..28\n";
+print "1..29\n";
 
 $FS = ':';
 
@@ -122,3 +122,8 @@ print "ok 27\n";
 print "not " if @list1 != @list2 or "@list1" ne "@list2"
              or @list1 != 2 or "@list1" ne "a   b c ";
 print "ok 28\n";
+
+# zero-width assertion
+$_ = join ':', split /(?=\w)/, "rm b";
+print "not" if $_ ne "r:m :b";
+print "ok 29\n";