目的:处理fastq文件中的空白序列,第二行和第四行为空白,将空白以及所在序列都删除。
逻辑:以两行为一个整体,当输入文件第二行为空白的时候,则将空白和空白的上一行都删除;若第二行不是空白,就输出
#!/usr/bin/perl
use strict;
#input
defined $ARGV[0] or die "perl fastq_filter.pl input.fastq\n";
#read fastq and filter
my @lines;
my $line;
my $line_number;
open IN,"<$ARGV[0]" or die "open file $ARGV[0]\n";
while (<IN>) {
chomp $line; ##
$line_number +=1; ##当输入文件时,行号显示
push @lines,$line;
if ($line_number %2 == 0 ) {
if ($line ne "") { ##不等于空白
print "$lines[0]\n$lines[1]\n"; ##输出
}
@lines = (); ##清空数组
}
}
close IN;