my %hash = ( one => "first bit", two => "second bit", ); my %fh; foreach my $file_name (keys %hash) { open (my $fh, ">", $file_name) or die "Could not write to '$file_name': $!"; $fh{$file_name} = $fh; } foreach my $key (keys %hash) { print {$fh{$key}} "$key => $hash{$key}\n"; }