On Tue, Jul 20, 2004 at 09:20:56PM -0400, Damian Conway wrote: : So what about: : : $foo[$i] : $foo{$k} : : ???
Those would work. : And would slices interpolate? Yes. Slices are entirely determined by what's in the subscript. : I can't say I'm keen on making {...} special in strings. It had to grow on me a while too. : I felt that the $(...) and @(...) were a much cleaner and more : general solution. Yeah, I felt that way too. But then I start looking at teaching people the subtle difference between ${} $() @{} @() %{} %() ? &{} &() ??? and realize that this is the only holdover from Perl 5 where we use the sigil to indicate the internal context rather than the type of the object expected. It's a danger sign that we have to keep repeating ourselves (or not, as the case may be): $($foo) @(@foo) $(@foo) Plus it ignores the fact that we've already introduced single character scalar context operators that make it trivial to coerce from list context to scalar. If {...} supplies list context by default, most intepolations are either the same length or shorter: $($foo) {$foo} @(@foo) [EMAIL PROTECTED] $(@foo) [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] It also encourages people be more specific about *which* scalar context they're looking for. It fits in with the general trend in Perl 6 that the "default" context is list context if you don't know better. Plus, as I mentioned, it cleans up the "$file.ext" mess, the "[EMAIL PROTECTED]" mess, and the "%08x" mess. That's three FAQs that don't have to exist. : The prospect of backslashing every opening brace in every interpolated string : is not one I relish. I'm just looking for what will be least confusing to the most people here. We can certainly have other possible behaviors, but something simple needs to be the default, and $() doesn't feel right to me anymore. Larry