#!/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>; return undef if !defined $line; chomp $line; $line =~ s/\A\s+//xms; ($l_time, @data) = split(/\s+/, $line); } while ($l_time < $self->{begin_time}); return undef if $l_time > $self->{end_time}; return ($l_time, map { hex $_ } @data); } 1;