use strict; use warnings; use Data::Dumper; my $file = '/path/to/your/file/here.fasta'; open (my $fh, '<', $file) or die "Could not open file '$file' $!"; my (%sequence_hash, $header); while ( my $line = <$fh> ) { chomp($line); if ( $line =~ m/^>(.*)/ ) { $header = $1; } else { $sequence_hash{$header} .= $line; } } # look at the header and sequence print Dumper(\%sequence_hash); my @translated_sequences; foreach my $seq ( keys %sequence_hash ) { $sequence_hash{$seq} =~ s/t/u/ig; push @translated_sequences, $sequence_hash{$seq}; } print Dumper(\@translated_sequences);