Luke Palmer wrote:

=head3 Embedding Interpolated Strings

It is also possible to embed an interpolating string within a non-
interpolating string by the use of the \qq{} construct. A string
inside a \qq{} constructs acts exactly as if it were an interpolated
string. Note that any end-brackets, "}", must be escaped within the
the \qq{} construct so that the parser can read it correctly.

I don't remember this from anywhere.  Where was this discussed?

http://www.perl.com/pub/a/2001/05/03/wall.html#rfc 226: selective interpolation in single quotish context.

Object methods I<are> object members.  All attributes are private, but
accessors are auto-generated for you (if you don't say otherwise).  So
I don't think parens should be required.

Larry seems to disagree:
http://www.perl.com/pub/a/2001/05/03/wall.html#rfc 252: interpolation of subroutines

=head3 Embedding non-interpolated constructs: C<\q{}>

Similar to embedding an interpolated string within a non-interpolated
string, it is possible to embed a non-interpolated string within a
interpolated string with \q{}. Any characters within a \q{} construct
are treated as if they were in an non-interpolated string.

And this is waaay down here away from \qq{}... why?

A sort of segregationist measure; I tried to keep single quote
behaivors confined to a single quote section, and double quote
behaviors to a double quote section.  Perhaps some sort of
reorganization is in order?

=head2 Special Quoting

=head3 Here-Docs

A line-oriented form of quoting is based on the shell "here-document"
syntax. Following a << you specify a string to terminate the quoted
material, and all lines following the current line down to the
terminating string are the value of the item. The terminating string
may be either an identifier (a word), or some quoted text. If quoted,
the type of quotes you use determines the treatment of the text, just
as in regular quoting. An unquoted identifier works like double quotes.
The terminating string must appear by itself, and any preceding or
following whitespace on the terminating line is discarded.

=over 3
Examples:

print << EOF;
The price is $Price.
EOF

print << "EOF"; # same as above
The price is $Price.
EOF

print << "EOF"; # same as above
The price is $Price.
EOF

print << `EOC`; # execute commands
echo hi there
echo lo there
EOC

print <<"foo", <<"bar"; # you can stack them
I said foo.
foo
I said bar.
bar

myfunc(<< "THIS", 23, <<'THAT');
Here's a line
or two.
THIS
and here's another.
THAT

You didn't mention that <<'THAT' doesn't interpolate.


If you use a here-doc within a delimited construct, such as in s///eg,

Ummm, s:e//$()/

Silly me :)


And that's interesting, as the rule might not still hold.

Very true.

the quoted material must come on the lines following tvhe final
delimiter. So instead of:

=over 3
s/this/<<E . 'that'
the other
E
. 'more '/eg;
=back

you have to write

=over 3
s/this/<<E . 'that'
. 'more '/eg;
the other
E
=back

Also note that with single quoted here-docs, backslashes are not
special, and are taken for a literal backslash, a behaivor that is
different from normal single-quoted strings.

Yes.  Shoulda mentioned that a long time ago, IMO.

Yeah, yeah, yeah.



Thanks for responding,

Joseph F. Ryan
[EMAIL PROTECTED]

Reply via email to