The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use CatalystX::Declare;

model MyApp::Web::Model::Calc {

    method op (Str $op) {

        if ($op eq 'add') { 
            return sub {
                my $num = shift;
                $num += $_
                    for @_;
                return $num;
            };
        }
        elsif ($op eq 'multiply') {
            return sub {
                my $num = shift;
                $num *= $_
                    for @_;
                return $num;
            };
        }
        else {
            return sub { 'unknown operator' };
        }
    }
}