$ perl -Mstrict -Mwarnings -le ' { my %op_func = ( "+" => sub { $_[0] + $_[1] }, "-" => sub { $_[0] - $_[1] }, "*" => sub { $_[0] * $_[1] }, "/" => sub { $_[0] / $_[1] }, ); sub expr { my ($lhs, $op, $rhs) = split " ", shift; $op_func{$op}->($lhs, $rhs); } } my @ops = ("+","-","*","/"); foreach my $op (@ops){ print "4 $op 5 = ", expr("4 $op 5"); } ' 4 + 5 = 9 4 - 5 = -1 4 * 5 = 20 4 / 5 = 0.8