use Data::Dumper; my %hash = ( 'mus09r' => [ '0,-464,AAACCATCTTGAAAC', '0,-350,GGTTCAGGATGGTTT', '0,-75,AAAACATCGTGACAC' ], ); my $string; while (my ($file,$val) = each %hash) { $string.=">dataset\n". "$file\n". ">instances\n". join("\n",@{$val}). "\n"; } print Dumper $string;