my %ops =( eq => sub{shift eq shift}, '==' => sub{shift == shift}, 'gt' => sub{shift > shift} ); sub compare{ my ($p1, $op, $p2) = @_; return $ops{$op}($p1, $p2); } # Now you can write stuff like if (compare('abc', 'eq', 'ABC'){ ..action }