On 4 Apr 2002, Aaron Sherman wrote:

> On Thu, 2002-04-04 at 11:09, Luke Palmer wrote:
> > On Thu, 4 Apr 2002, James Ryley wrote:
> 
> > How 'bout:
> > 
> > $foo = 'def';
> > $bar = 'ghi';
> > $y = 'abc$foo$bar';
> > $z = eval qq{"$y"};
> > 
> > Of course, for security and correctness reasons, you'd probably want to:
> > 
> > $y =~ s/\\/\\\\/g;
> > $y =~ s/"!/\\"/g;
> 
> Why would "\\t" not double-interpolate to a tab? Also, why would "\\"
> not double interpolate to a syntax error?
> 
> Given $(...), you might as well give up on correctness and security. It
> seems like you really just want to have a limited version of eval called
> interpolate, e.g.:


>       $z = interpolate interpolate $y;
> 
> Then you have ultimate control. 

Uhm, I disagree. I think you really get ultimate control _without_ 
interpolate. Some people might want to make \\t interpolate to tab, and 
some would not. The syntax is simple enough for simple s///'s to take care 
of it. And you could say
die "Can't interpolate expressions" if /$\(/;
And things like that. I think its fine.

Reply via email to