use strict; use warnings; use Data::Dumper; sub info { print Dumper \@_ }; sub names { print Dumper \@_ }; my %general = ( data => sub { info( who => 'data who', why => 'data why', ) }, results => sub { names( first => 'results first', zip => 'results zip', ); info( who => 'results who', why => 'results why', ); }, ); $general{data}->(); $general{results}->();