sub make_bin_ops { my $op = shift; return sub { my ($a, $b) = @_; return eval "$a $op $b"; } } my ($div_OP) = make_bin_ops('/'); #### sub make_bin_ops { $op = shift; $func = "sub { my (\$a, \$b) = \@_ return \$a $op \$b; }"; return eval $func; } my ($div_OP, $mult_OP) = make_bin_ops('/'), make_bin_ops('*'); print &$div_OP(2,2); print &$mult_OP(2,2);