#! /local/bin/perl -s
#
# rgrep		--- extract records matching a pattern from files
#
# Select records that contain a string.
# Each record is separated by a blank line.
#
# Author: Oscar Nierstrasz (Revised: 11/10/88)
# Rewritten in perl (27/6/93)
#
# - added -i option 24/10/93
#
# this variant suggested by Tom Christiansen <tchrist@cs.Colorado.EDU>
# is fastest!

$u = "Usage: rgrep [-i] <pattern> [<file> ...]\n" ;

($pattern,@files) = @ARGV ;
defined($pattern) || die($u) ;
@ARGV = @files ;

# set blank line to be record separator:
$/ = "" ;

if ($i) { $i = "i"; }

# patterns with alternatives are slow to evaluate,
# so construct a logical alternative instead:
foreach $p (split(/\|/,$pattern)) {
	$mpat .= "/$p/o$i && (print, next);\n";
}
eval "while(<>) { $mpat }";
__END__

