To save yourself some grief, I would simply look for > and then replace the line, regardless of what else is there (which is what you are doing anyway). You can also use print $variable and sleep(3); in parts of the code to help see what is present in certain places, particularly if you don't get a match. We don't have the input files, so we can't tell if there are spaces or tabs in the FASTA headers.
use strict; use warnings; my @files = glob("*.fa"); for my $file ( @files ) { # open the input file open my $in, "<", "$file" or die "Cannot open "$file": $!\n"; # open the output file open my $out, ">", "$file.out" or die "Cannot open "$file.out": $!\ +n"; # reset contig number my $contig_number = 1; while ( <$in> ) { chomp; if ( $_ ~= m/^>/ ) { # it's a header print $out ">config_$contig_number\n\n"; $contig_number++; } else { # it's sequence print $out "$_\n\n"; } close $in; close $out; } } my $file_count = @files; print "Successfully processed $file_count files!\n"; exit;
In reply to Re: Renaming headers works for some files but fails for some files
by bioinformatics
in thread Renaming headers works for some files but fails for some files
by MVRS
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |