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
Developer
Plus Three, LP

Reply via email to