6 (my $PROG = $0) =~ s!^.*/!!;
10 print STDOUT
"usage: $PROG [-r LO-HI] FILE ...\n";
13 my ($lo_bound, $hi_bound) = (undef, undef);
15 my %opt; $bogus = 1 unless getopts
("r:", \
%opt);
16 if (defined $opt{"r"}) {
17 if ($opt{"r"} =~ /^(\d+)?-(\d+)?$/) { ($lo_bound, $hi_bound) = ($1, $2); }
20 if ($bogus) { usage STDERR
; exit 2; }
26 chomp; s/\s*\#.*$//; next LINE
if /^$/;
27 die "bad line" unless /^\s*(\d+)\s*(\d+)\s*$/;
28 my ($lo, $hi) = ($1, $2);
29 push @bad, [$lo, $hi];
32 @bad = sort { $a->[0] <=> $b->[0] } @bad;
33 my ($lo, $hi) = (undef, undef);
36 if ($hi <= $lo_bound) { return; }
37 if (defined $hi_bound && $lo >= $hi_bound) { return; }
38 if ($lo < $lo_bound) { $lo = $lo_bound; }
39 if (defined $hi_bound && $hi > $hi_bound) { $hi = $hi_bound; }
40 printf "%d %d\n", $lo - $lo_bound, $hi - $lo_bound;
44 if (!defined $lo) { ($lo, $hi) = ($a, $b); }
45 elsif ($a > $hi) { emit
$lo, $hi; ($lo, $hi) = ($a, $b); }
46 elsif ($b < $lo) { die "buggy piece of shit"; }
49 emit
$lo, $hi if defined $lo;