use warnings; my $OUT; open $OUT, ">", "$filename.counts" or die "$filename.counts: $!"; foreach my $chr (keys %chrsize){ my $size = $chrsize{$chr}; # chr, size, index work (print statements show reasonable values) foreach my $index (0..$size) { #if (exists $piRNA{$chr}{$index}) { # print $OUT "$chr\t$index\t$piRNA{$chr}{$index}\n";} $piRNA{$chr}{$index}=0 if (!exists $piRNA{$chr}{$index}); #print "$piRNA{$chr}{$index}\n" if (exists $piRNA{$chr}{$index}); # test code I've put in print $OUT "$chr\t$index\t$piRNA{$chr}{$index}\n"; } }