in reply to Re^2: Form letters: eval a string to substutite perl variables
in thread Form letters: eval a string to substutite perl variables
But also consider this: eval $string is for interpreting strings as code, not for variable substitution. Let's say you've got a string
You can now eval $string to interpolate $stuff and $interpolate, but... You need to add quotes:my $string = 'some $stuff I want to $interpolate';
update there's a bug here. read ikegami's reply.my $value = eval "'$string'";
The problem with this, is that you can't know if there are any quotes in $string, so you need to escape the quotes in $string before eval()ing. Also, it will interpolate anything that looks like a variable. Even if the variable in question shouldn't be interpolated at all.
In general, if you want to give your users the maximum amount of control, use eval. In any other case, you're better off using a templating language. You might even use something like Text::Template, which is fast and works more or less like perl. If you want to use something simple that's more strict in its input, use something like GrandFather's post.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Form letters: eval a string to substutite perl variables
by ikegami (Patriarch) on Oct 27, 2006 at 23:39 UTC | |
by Joost (Canon) on Oct 27, 2006 at 23:50 UTC | |
by Fletch (Bishop) on Oct 28, 2006 at 15:10 UTC |