perl 利用管道读取压缩文件内容

perl的文件句柄不仅支持普通文件, 还支持管道,今天需要统计一个fastq文件中的序列数和碱基数,而NGS的fastq文件一般都是gzip压缩的,所以

需要读取压缩文件中的内容,代码如下:

my ($fastq) = @ARGV:
my ($reads, $bases) = cal_sequence_info($fastq);
print qq{$reads\t$bases\n};

sub cal_sequence_info {
    my $fastq = shift;
    my $file_handle =   $fastq =~ /gz$/ ? qq{$fastq} : qq{gzip -dc $fastq |};
    open FASTQ, $file_handle or die "Can't open $fastq\n";
    my ($reads, $bases);
    while (my $readid = <FASTQ>) {
        my $quality   = <FASTQ>;
        my $comment   = <FASTQ>;
        my $sequence  = <FASTQ>;
        chomp($sequence);
        $reads++;
        $bases += length $sequence;
    }
    close FASTQ;
    return ($reads, $bases);
}

直接利用linux中的管道, 这样可以方便的读取压缩文件中的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值