sub foo ( $pos1, # positional parameter; consumes 1 arg $pos2, # positional parameter; consumes 1 arg :$name1, # named parameter, consumes ("name1", value) arg pair :$name2, # named parameter, consumes ("name2", value) arg pair @rest, # consumes all unrecognised name/value pairs ) { ... }