my @cats = qw(persian siamese cute); my @dogs = qw(doverman bulldog); ## Bad data structure my @data = (\@cats, \@dogs); function( \@data ); ## Good data structure function1({ cats => \@cats, dogs => \@dogs, }); #### sub function1 { my $params = shift; warn "My Dogs\n"; for (@{$params->{'dogs'}}) { warn "\t$_\n" } warn "My Cats\n"; for (@{$params->{'cats'}}) { warn "\t$_\n" } }