$ perl -Mstrict -Mwarnings -E 'say eval for map { "12 $_ 3" } qw{+ - * / % **}'
15
9
36
4
0
1728
####
$ perl -Mstrict -Mwarnings -E '
my %op_hash = (
q{+} => sub { $_[0] + $_[1] },
q{-} => sub { $_[0] - $_[1] },
q{*} => sub { $_[0] * $_[1] },
q{/} => sub { $_[0] / $_[1] },
q{%} => sub { $_[0] % $_[1] },
q{**} => sub { $_[0] ** $_[1] },
);
say for map { $op_hash{$_}->(12, 3) } qw{+ - * / % **};
'
15
9
36
4
0
1728
####
$ perl -Mstrict -Mwarnings -E '
my %op_hash = (
q{+} => sub { $_[0] + $_[1] },
q{-} => sub { $_[0] - $_[1] },
q{*} => sub { $_[0] * $_[1] },
q{/} => sub { die "Divide by zero!" if $_[1] == 0; $_[0] / $_[1] },
q{%} => sub { $_[0] % $_[1] },
q{**} => sub { $_[0] ** $_[1] },
);
say for map { $op_hash{$_}->(12, 0) } qw{+ - * / % **};
'
Divide by zero! at -e line 6.