OOPS, I see that yr already identified this approach.
If your lines are really all the same length, you could do the job via a seek() / read() loop. The example below needs error checking. I haven't done any speed tests.
#!/usr/bin/perl
use strict;
use warnings;
my $linesep_len = length($/);
my $rec_len = length('ACATCACCTCCCACAACGAGGACTACACCATCGTGGAACA') + $li
+nesep_len;
my $read_len = 1;
my $skip_len = $rec_len - $read_len;
binmode(DATA);
seek(DATA, 10, 1) or die "seek error";
my $buf = ' ' x $read_len;
while (read(DATA, $buf, $read_len) > 0) {
print $buf, "\n";
seek(DATA, $skip_len, 1) or last;
}
__DATA__
ACATCACCTCCCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCxCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCsCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCjCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCcCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCCCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCCCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCCCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTCCCACAACGAGGACTACACCATCGTGGAACA
ACATCACCTC-CACAACGAGGACTACACCATCGTGGAACA
Output:
C
x
s
j
c
C
C
C
C
-