Sub-MicroSig This module allows you to give subroutine a signature using L. use Sub::MicroSig; sub pow :Sig($x $pow; $trunc) { my $arg = shift; my $value = $arg->{x} ** $arg->{pow}; $value = int $value if $arg->{trunc}; } ... pow({ pow => 2, x => 4 }); # 64 pow([ 2, 0.5, 1 ]); # 1 # int(sqrt(2))