my $result = eval "\$x $op \$y";
my %ops = ( '+' => sub {return $_[0] + $_[1]}, '-' => sub {return $_[0] - $_[1]}, ); my $result = $ops{$op}->($x, $y);
Ted Zlatanov's eval() answer Sam Holden's coderef answer
Next