Jonathan Scott Duff wrote: > On Thu, Dec 20, 2007 at 07:58:51AM -0500, Mark J. Reed wrote: >> I think the issue is that bare vars don't interpolate anymore, but >> they still have sigils of their own, so adding to the default interp >> syntax is too noisy: ${$var} is not really much improvement over >> ${\(expr)}. > > That's not quite accurate. Scalars interpolate as they always have, but > aggregates need to be followed their respective bracketing construct > (e.g., "My array contains these items: @array[]") > > The only "issues" that I see from the original email are: > 1. interpolating scalars but not code > 2. having to be more careful about what type of string you're using > > Adriano answered #1 I think: $yaml = Q:!c"{ $key: 42 }"; > > For the second one, if you're really just worried about how prevalent {} > appear in double-quotish strings, perhaps @Larry could be persuaded to > make them non-interpolative by default. (i.e., the adverb would be > required to make them interpolate)
That pretty much sums up my concern. The gyrations to turn off interpolating code... it's nice to know that exists but not something I want to ever have to remember or type or even consider my quoting context. "Interpolate" vs "not interpolate" is enough, I have more important things to worry about while coding. [1] Non-interpolative by default... well I don't exactly want the feature to go away either. [2] I can see its uses [3] and it potentially eliminates some otherwise convoluted bits of code. And again, I don't want to be thinking about flipping interpolation features on and off for each string. Even qs// is more than I want to consider. [4] Code execution in a string is a very powerful thing, so it's not the sort of thing one wants to accidentally trigger. Because it's using a common, innocent construct, this strikes me as being all too easy to trigger accidentally and unknowingly. $ pugs -wle 'sub key() { 42 } sub value() { 23 } say "{ key: value }"' 23 Whoops. It's also worth noting that ${} and @{} adding more context flexibility. It appears {} only happens in list context right now, though I admit I'm not up on all the new contexts. [1] Note, I'm the sort of person that uses "" until I have a reason otherwise. [2] Now being able to turn it ON in a single quoted string would be handy, but that's just because of my special case writing a lot of make generating code where $ already has meaning. [3] Although a lot of them are handled by the interpolation of $obj.method() which makes me happy. [4] Which doesn't appear to be documented in S2. -- Look at me talking when there's science to do. When I look out there it makes me glad I'm not you. I've experiments to be run. There is research to be done On the people who are still alive. -- Jonathan Coulton, "Still Alive"