perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Peters <>
Subject Re: Nested Interpolation
Date Fri, 31 Mar 2006 13:48:20 GMT

Steve Thames wrote:
> Consider this:
> 	my %names = (Bob => 'Robert Brower');
> 	my $caption = 'Name: $names{Bob)';
> 	print  eval "qq|$caption|";
> If you can't see it, there is a syntax error in $caption: closing
> paren ) instead of brace }.  The eval will produce no $@ and will
> return the empty string.
> As screwy as this looks, I have a very good reason for using this
> capability.  I have written a powerful code generation tool that
> relies heavily on this.  
> Does anyone have any idea how to capture the syntax error in a case
> like this?

It's not a syntax error, per say. Perl's string parser will look in
double quoted strings for something that looks like a variable. If it
couldn't be interpreted as a valid variable outside of the string it is
ignored. It can't possibly through an error since there are a million
different things that might look kinda like a variable, but aren't really.

Michael Peters
Plus Three, LP

View raw message