sub mysay (;+@) { return say $_ unless @_; if ( ref $_[0] eq 'ARRAY' ) { unshift @_, @{shift()} } elsif ( ref $_[0] eq 'HASH' ) { unshift @_, %{shift()} } say join "\n", @_; }