my $do_operation; # Defined elsewhere, possibly from user input my $by_ammount; # Also from user my @employees; # Also defined elsewhere my $op = $do_operation eq 'add' ? sub {$_[0] += $_[1]} : $do_operation eq 'mult' ? '*' : sub {$_[0] *= $_[1]} # And so on ; &$op($_->salary) for @employees;