Ваш вопрос немного сбивает с толку.Должен ли фрагмент кода быть сценарием Perl или сценарием оболочки, который вызывает Perl-однострочник?
Предполагается, что вы намеревались написать сценарий Perl, в который вы перенаправляете вывод samtools view
в:
#!/usr/bin/perl
use strict;
use warnings;
while (<STDIN>) {
my @fields = split("\t", $_);
# debugging, just to see what field is extracted...
print "'$fields[10]' ", length($fields[10]), "\n";
if (length($fields[10]) eq 21) {
print $_;
}
}
exit 0;
С вашими тестовыми данными в dummy.txt
я получаю:
# this would be "samtools view ./file.bam | head | perl dummy.pl" in your case?
$ cat dummy.txt | perl dummy.pl
'FF:FFFF,FFFFFFFF:FFFFF' 22
'FFFFFFF,FFFFFFFFFFFFFFFF' 24
Хотя ваши тестовые данные не содержат выборку длиной 21, поэтому предложение if
никогда не выполняетсяказнены.