Data::Range::Compare::Stream::Cookbook::FILE_RESULT_EXAMPLE - Doc on how to build file result iterators
This section shows how to roll your own Consolidation result iterator, based on file iteration
This example assumes your data contains no overlaps no duplicates and is pre-sorted in the desired order
Source File
1 2 3 5 9 11 12 12 98 174
Example package
package MyIterator; use strict; use warnings; use IO::File; use IO::Select; use base qw(Data::Range::Compare::Stream::Iterator::Base); use Data::Range::Compare::Stream::Iterator::Consolidate::Result; use Data::Range::Compare::Stream; sub new { my ($class,%args)=@_; my $has_next; my $self=$class->SUPER::new(%args); if(defined($args{filename})) { my $fh=IO::File->new($args{filename}); if($fh) { $self->{fh}=$fh; my $line=$fh->getline; $self->{next_line}=$line; $has_next=defined($line); } else { $self->{msg}="Error could not open $args{filename} error was: $!"; } } $self->{has_next}=$has_next; return $self; } sub get_next { my ($self)=@_; return undef unless $self->has_next; my $line=$self->{next_line}; $self->{next_line}=$self->{fh}->getline; $self->{has_next}=defined($self->{next_line}); chomp $line; my $range=new Data::Range::Compare::Stream(split /\s+/,$line); return new Data::Range::Compare::Stream::Iterator::Consolidate::Result($range,$range,$range); } 1;
Now we can use the result iterator.
use strict; use warnings; use MyIterator; my $iterator=new MyIterator(filename=>'file_example.src'); while($iterator->has_next) { print $iterator->get_next,"\n"; }
Michael Shipper
As of version 0.001 the Project has been moved to Source-Forge.net
Data Range Compare https://sourceforge.net/projects/data-range-comp/
Copyright 2011 Michael Shipper. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Data::Range::Compare::Stream, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Range::Compare::Stream
CPAN shell
perl -MCPAN -e shell install Data::Range::Compare::Stream
For more information on module installation, please visit the detailed CPAN module installation guide.