If those few operations are all you need, there's nothing wrong with the if/else dispatching above. However, if you ever want to extend it to other mathmatical operations, I'd use a dispatch table:
my %OPERATIONS = (
'*' => sub { $_[0] * $_[1] },
'-' => sub { $_[0] - $_[1] },
'+' => sub { $_[0] + $_[1] },
);
# $operator, $first, and $second defined
# elsewhere, from user input
print "Result: ",
$OPERATIONS{$operator}->($first, $second),
"\n"
if exists $OPERATIONS{$operator};
Also, avoid using $a and $b as variable names, as they have special meaning in sort subroutines.
---- I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer
:(){ :|:&};:
Note: All code is untested, unless otherwise stated
|