open my $fh, "<:encoding(utf8)", "output.csv" or die "output.csv: $!"; my $csv = Text::CSV->new({binary=>1, auto_diag=>2, eol=>$/, always_quote=>1 }); $csv->print($fh, (select, ["sku", @columns])); for my $sku (sort keys %$itms) { $csv->print($fh, (select, [$sku, map { $itms->{$sku}{$_} } @columns ])); }