my $op = shift @ARGV; if ( $op eq 'add' ) { my $rtn = add( @ARGV ); print "The sum is: $rtn\n"; } elsif ( $op eq 'multiply' ) { my $rtn = multiply( @ARGV ); print "The product is: $rtn\n"; } #### sub add { my $sum = 0; for ( @_ ) { $sum += $_; } return $sum; } #### sub add { my $sum = 0; $sum += $_ for @_; return $sum; } #### #!/usr/bin/perl -- use strict; use warnings; my $op = shift @ARGV; my %ops = ( 'add' => sub { my $s = 0; $s += $_ for @_; print "The sum is: $s\n" }, 'multiply' => sub { my $p = 1; $p *= $_ for @_; print "The product is: $p\n" } ); $ops{$op}(@ARGV) if exists $ops{$op}; #### #!/usr/bin/perl -- use strict; use warnings; my $op = shift @ARGV; my $result; $op eq 'add' ? ( $result = 0, map { $result += $_ } @ARGV ) : ( $result = 1, map { $result *= $_ } @ARGV ); print ( $op eq 'add' ? 'The sum is:' : 'The product is:' ); print " $result\n";