#!/usr/bin/perl -w package SCX::LogReader; use strict; sub new { my ($class, $args) = @_; open my $fh, '<', $args->{filename} or die "Can't open $args->{filename}: $!"; my $self = { begin_time => $args->{begin_time} || 0, end_time => $args->{end_time} || (1<<32), fh => $fh, }; bless $self, $class; return $self; } sub get_data { my ($self) = @_; my $fh = $self->{fh}; my ($line, $l_time, @data); do { $line = <$fh>; if (!defined $line) { print STDERR "End of the log file reached.\n"; return (); } chomp $line; $line =~ s/\A\s+//xms; ($l_time, @data) = split(/\s+/, $line); } while ($l_time < $self->{begin_time}); if ($l_time > $self->{end_time}) { print STDERR "Requested end time reached.\n"; return (); } return ($l_time, map { hex $_ } @data); } 1;