use Bio::DB::Sam; $fh = Bio::DB::Sam->new(-fasta=> "fasta file", -bam =>"bam input file"); my $header = $fh->header(); my $bam_out = Bio::DB::Bam->open("bam out file", "w+"); my @alignments = $fh->features(); for my $align (@alignments) { my $query = $align->qname; my $target = $align->seq_id; my $is_unmapped = $align->unmapped; unless ($in_unmapped) { $bam_out->write1($align); } }