App-loggrep
view release on metacpan or search on metacpan
lib/App/loggrep.pm view on Meta::CPAN
}
# find the log line to begin grepping at
sub _get_start {
my ( $lines, $start, $t1, $t2, $gd ) = @_;
return 0 if $start <= $t1;
my $lim = $#$lines;
my ( $s, $e ) = ( [ 0, $t1 ], [ $lim, $t2 ] );
my ( $last, $revcount ) = ( -1, 0 );
{
my $i = _guess( $s, $e, $start );
return $i if $i == $s->[0];
my $rev = $last == $i;
$last = $i;
if ($rev) { # if we find ourselves looping; bail out
$revcount++;
if ( $revcount > 1 ) {
--$i if $i;
return $i;
}
}
lib/App/loggrep.pm view on Meta::CPAN
}
if ( $s->[0] == $e->[0] ) {
--$i if $i;
return $i;
}
redo;
}
}
# estimate the next log line to try
sub _guess {
my ( $s, $e, $start ) = @_;
my $delta = $start - $s->[1];
return $s->[0] unless $delta;
my $diff = $e->[1] - $s->[1];
my $offset = int( ( $e->[0] - $s->[0] ) * $delta / $diff );
return $s->[0] + $offset;
}
1;
lib/App/loggrep.pm.tdy view on Meta::CPAN
}
# find the log line to begin grepping at
sub _get_start {
my ( $lines, $start, $t1, $t2, $gd ) = @_;
return 0 if $start <= $t1;
my $lim = $#$lines;
my ( $s, $e ) = ( [ 0, $t1 ], [ $lim, $t2 ] );
my ( $last, $revcount ) = ( -1, 0 );
{
my $i = _guess( $s, $e, $start );
return $i if $i == $s->[0];
my $rev = $last == $i;
$last = $i;
if ($rev) { # if we find ourselves looping; bail out
$revcount++;
if ( $revcount > 1 ) {
--$i if $i;
return $i;
}
}
lib/App/loggrep.pm.tdy view on Meta::CPAN
}
if ( $s->[0] == $e->[0] ) {
--$i if $i;
return $i;
}
redo;
}
}
# estimate the next log line to try
sub _guess {
my ( $s, $e, $start ) = @_;
my $delta = $start - $s->[1];
return $s->[0] unless $delta;
my $diff = $e->[1] - $s->[1];
my $offset = int( ( $e->[0] - $s->[0] ) * $delta / $diff );
return $s->[0] + $offset;
}
1;
( run in 0.579 second using v1.01-cache-2.11-cpan-702932259ff )