Есть много способов сделать это, как это обычно бывает в Perl.
Если файл не большой, вы можете читать строку за строкой в массив (или, если это уже одна запись в строке, просто отбросить весь файл в массив). Затем используйте цикл while
(и дескриптор файла второго файла), чтобы сравнить положение динуклеотидов.
Поскольку это проблема биоинформатики, а файлы, как правило, имеют большой размер, я был бы умен и изучил бы чтение каждого дескриптора файла, строку за строкой и проводил сравнения.
Для 3-символьного разбиения, которое вы пытаетесь сделать, я бы использовал цикл for
, пока длина проверяемой строки не делится на 3 -1. Затем создайте регулярное выражение, взяв первые три буквы, затем следующую, и так далее ...
Что-то вроде /\d{$count}(\w{3})/
Цикл while
может выглядеть примерно так:
#!/usr/bin/perl -w
use strict;
open FILE1, "file1.txt" or die "Cannot open file1.txt: $!\n";
open FILE2, "file2.txt" or die "Cannot open file2.txt: $!\n";
my $count = 0;
while (<FILE1>) {
chomp(my $lineF1 = $_);
chomp(my $lineF2 = <FILE2>);
# some changes may need to be made to this if statement
if ($lineF1 eq $lineF2) {
# do something important here
print "$lineF1\n";
} else {
print "Line $count mismatch\n";
}
$count++;
}
close(FILE1);
close(FILE2);