my ( $self, #@type Foo::Bar $foobar, #@type Foo::Baz $foobaz ) = @_; #### #@returns Some::Class #@arg $arg1 Foo::Bar # some description #@arg $arg2 Foo::Baz #@arg $arg3 # just a description #@arg %args key1, key2 Foo::Zoo, key3 sub somesub{ my ($self, $arg1, $arg2, $arg3, %args) = @_; } #### #@arg [$var1 HashRef[Foo::Bar]] # description or #@arg optional $var1 HashRef[Foo::Bar] # description or #@oarg $var1 HashRef[Foo::Bar] # description