sub thing { my ( $ref, $sort_by ) = @_; my %sort_sub = ( thing1 => sub { $ref->{$a} <=> $ref->{$b} }, thing2 => sub { $ref->{$a}->[CON] <=> $ref->{$b}->[CON] }, etc => sub { 'and so forth' }, ); my $sorter = $sort_sub{$sort_by}; for my $key ( sort $sorter keys %{$ref} ) { # ... } }