in reply to change \n to \t

TIMTOWTDI. I'd abandon the array unless you need it for something else.

#!/usr/bin/env perl use strict; use warnings; my $text; { local $/ = undef; $text = <DATA>; } $text =~ s/\n(?!>)/\t/g; print "$text\n"; __DATA__ >1 AGTCGTAGCAT >2 TGAGCTACG >3 GGCATAGN >4 CGCACNCAGCTACACC >5 NGATAGCTACA

This approach uses a negative look-ahead. It replaces a newline not followed by an angle bracket with a tab. HTH.

Replies are listed 'Best First'.
Re^2: change \n to \t
by yueli711 (Sexton) on Aug 23, 2019 at 15:50 UTC

    Hello, hippo, Thank you so much for your response! Thank you for your help! I really appreciated! Best, Yue

      Actually, my DATA file is huge.
      Then you're probably doing the wrong way using two arrays to store the contents of the file. It is better to read, process and output one line at a time.

      For example something like this:

      open my $IN1, "<", "1.fa" or die "Cannot open input file"; open my $OUT, ">", "1.txt" or die "Cannot open output file"; while (my $line = <$IN1>) { # Do here whatever transformation/substitution you need to $line print $OUT $line; } close $IN1; close $OUT;
      This will be faster and will consume much less memory.