my $ordered_schema = sprintf( "%s%s", $header . "\n", sub { my $ordered_columns; for my $column (sort keys %columns) { $ordered_columns .= $columns{$column} . "\n"; } return $ordered_columns; }->(), ); #### my $ordered_schema = join "\n", $header, map $columns{ $_ } sort keys %columns; #### my $ordered_schema = sprintf( "%s%s", $header . "\n", do { my $ordered_columns; for my $column (sort keys %columns) { $ordered_columns .= $columns{$column} . "\n"; } $ordered_columns; ## Update: return statement removed. Thanks Choroba. }, );