{ my $subs = { num => sub { $a <=> $b }, cmp => sub { $a cmp $b }, }; for ( qw{ NS MX TXT HINFO SPF SRV A CNAME PTR } ) { if ( exists $dns_records{$_} ) { print_header("$_"); my $sortby = $subs->{ uc $_ eq 'PTR' ? 'num' : 'cmp' }; for my $rec ( sort { $sortby->() } @{$dns_records{$_}} ) { print $rec, "\n"; } } } }