GenOO
view release on metacpan or search on metacpan
lib/GenOO/Data/File/FASTQ.pm view on Meta::CPAN
# POD documentation - main docs before the code
=head1 NAME
GenOO::Data::File::FASTQ - Object implementing methods for accessing fastq formatted files
=head1 SYNOPSIS
# Object that manages a fastq file.
# To initialize
my $file = GenOO::Data::File::FASTQ->new(
file => undef,
);
=head1 DESCRIPTION
This object offers methods to read a fastq file entry by entry
=head1 EXAMPLES
# Read one entry
my $entry = $fastq_parser->next_record();
=cut
# Let the code begin...
package GenOO::Data::File::FASTQ;
$GenOO::Data::File::FASTQ::VERSION = '1.5.2';
#######################################################################
####################### Load External modules #####################
#######################################################################
use Modern::Perl;
use autodie;
use Moose;
use namespace::autoclean;
#######################################################################
######################### Load GenOO modules ######################
#######################################################################
use GenOO::Data::File::FASTQ::Record;
#######################################################################
####################### Interface attributes ######################
#######################################################################
has 'file' => (
isa => 'Maybe[Str]',
is => 'rw',
required => 1
);
has 'records_read_count' => (
traits => ['Counter'],
is => 'ro',
isa => 'Num',
default => 0,
handles => {
_inc_records_read_count => 'inc',
_reset_records_read_count => 'reset',
},
);
#######################################################################
######################## Private attributes #######################
#######################################################################
has '_filehandle' => (
is => 'ro',
builder => '_open_filehandle',
init_arg => undef,
lazy => 1,
);
#######################################################################
######################## Interface Methods ########################
#######################################################################
sub next_record {
my ($self) = @_;
my $filehandle = $self->_filehandle;
while (my $line = $filehandle->getline) {
if ($line =~ /^\@/) {
my $id = substr($line,1);
chomp($id);
$id =~ s/\r//g;
my $seq = $filehandle->getline;
chomp($seq);
$seq =~ s/\r//g;
$filehandle->getline; #unused line
my $quality = $filehandle->getline;
( run in 1.522 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )