in reply to Re: Padding search results with context
in thread Padding search results with context

Thanks - it's obvious (of course you use the list elements where you construct them), but sometimes I need somebody to point me to the obvious ;-)
  • Comment on Re^2: Padding search results with context

Replies are listed 'Best First'.
Re^3: Padding search results with context
by dwm042 (Priest) on Aug 14, 2007 at 15:29 UTC
    This "one pass" solution is obviously inspired by people like Grandfather, but this is a solution I can understand *^^*:

    #!/usr/bin/perl use warnings; use strict; use List::Util; package main; my $max = 21; my @nums = (1, 5, 6, 8, 15, 20); my $pad = 1; # lines of context on each side my $last = -1 - $pad; foreach ( @nums ) { my $start = List::Util::max 1, $_ - $pad, $last + 1; my $end = List::Util::min $max - 1 , $_ + $pad; next if ( $start > $end ); for ( my $i = $start; $i <= $end; $i++ ) { if ( $i == $_ ) { print "Highlighted $i\n"; } else { print "Line $i\n"; } } $last = $end; }
    The output is:

    C:\Code>perl mintest.pl Highlighted 1 Line 2 Line 4 Highlighted 5 Line 6 Line 7 Highlighted 8 Line 9 Line 14 Highlighted 15 Line 16 Line 19 Highlighted 20