x
x
x


Do so in a way which:

 does not involve string manipulation of the input source code
 is plausibly extensible to a runtime-chosen set of bindings rather than just x
 does not make x a global variable


or note that these are impossible.



See also

 For more general examples and language-specific details, see Eval.
 Dynamic variable names is a similar task.


sub eval_with_x
   {my $code = shift;
    my $x = shift;
    my $first = eval $code;
    $x = shift;
    return eval($code) - $first;}
 
print eval_with_x('3 * $x', 5, 10), "\n"; # Prints "15".