This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
pod/perlop: Note that need space between op and \w delim
authorKarl Williamson <khw@cpan.org>
Tue, 20 Dec 2016 21:37:11 +0000 (14:37 -0700)
committerKarl Williamson <khw@cpan.org>
Fri, 23 Dec 2016 00:59:06 +0000 (17:59 -0700)
You can't say qqXfooX because it thinks it is all one bareword.  Note
this, and that

    qq XfooX

works.

pod/perlop.pod

index 8fefc4e..2640b51 100644 (file)
@@ -1389,7 +1389,8 @@ Note, however, that this does not always work for quoting Perl code:
 is a syntax error.  The C<L<Text::Balanced>> module (standard as of v5.8,
 and from CPAN before then) is able to do this properly.
 
-There can be whitespace between the operator and the quoting
+There can (and in some cases, must) be whitespace between the operator
+and the quoting
 characters, except when C<#> is being used as the quoting character.
 C<q#foo#> is parsed as the string C<foo>, while S<C<q #foo#>> is the
 operator C<q> followed by a comment.  Its argument will be taken
@@ -1398,6 +1399,12 @@ from the next line.  This allows you to write:
     s {foo}  # Replace foo
       {bar}  # with bar.
 
+The cases where whitespace must be used are when the quoting character
+is a word character (meaning it matches C</\w/>):
+
+    q XfooX # Works: means the string 'foo'
+    qXfooX  # WRONG!
+
 The following escape sequences are available in constructs that interpolate,
 and in transliterations:
 X<\t> X<\n> X<\r> X<\f> X<\b> X<\a> X<\e> X<\x> X<\0> X<\c> X<\N> X<\N{}>