Luke Palmer wrote:
http://www.perl.com/pub/a/2001/05/03/wall.html#rfc 226: selective interpolation in single quotish context.=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?
Larry seems to disagree: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.
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 QuotingYou didn't mention that <<'THAT' doesn't interpolate.
=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
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]