sub foo { my %args = (1 == @_) ? (named_arg => shift) : @_; # etc } #### sub foo { my $args = shift; if (! ref($args)) { # <- test depends on usage $args = {named_arg => $args); } # etc }