[root@devel3 log]# cat /usr/bin/re #!/usr/bin/perl die " Usage re [RE] Full Perl grep on STDIN or filename Recursive if filename is a dir " unless @ARGV >= 1; my $re = qr/$ARGV[0]/; if ( $ARGV[1] ) { if ( -d $ARGV[1] ) { # we have a dir so let's recuse require File::Find; File::Find::find( \&grep_file, $ARGV[1] ); } else { open F, $ARGV[1] or die "Can't read $ARGV[1] $!\n"; do{print if m/$re/} while ; close F; } } else { do{print if m/$re/} while ; } sub grep_file { return unless -f $_; open F, $_ or die "Can't read $File::Find::name $!\n"; my $matches = ''; do{$matches .= $_ if m/$re/} while ; print "$File::Find::name\n$matches" if $matches; close F; } [root@devel3 log]# re pri.. /usr/bin/re do{print if m/$re/} while ; do{print if m/$re/} while ; print "$File::Find::name\n$matches" if $matches; [root@devel3 log]# cat /usr/bin/re | re [A-Z]+IN Full Perl grep on STDIN or filename do{print if m/$re/} while ; [root@devel3 log]# cat /usr/bin/re | re "\b[A-Z]+\b" Usage re [RE] Full Perl grep on STDIN or filename " unless @ARGV >= 1; my $re = qr/$ARGV[0]/; if ( $ARGV[1] ) { [snip] [root@devel3 log]# re perl /devel/www/modperl /devel/www/modperl/logout.pl #!/usr/bin/perl -w /devel/www/modperl/search.pl #!/usr/bin/perl -w /devel/www/modperl/error.pl #!/usr/bin/perl -w [snip] [root@devel3 log]#