This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/share/CodeBlocks/lexers/lexer_perl.sample

79 lines
1.3 KiB
Plaintext
Raw Normal View History

# A grep in perl - found somewhere in the depth of the internet...
#
# Usage: perlgrep.pl [OPTION]... PATTERN [FILE]...
# OPTIONS:
# -r Recursive search
# -i Case insensitive
use Getopt::Std;
use File::Find;
if ($#ARGV < 1) {
&showUsage();
}
else
{
getopts('ir'); # Get the options
# this assumes that all the options are before the REGEX
while ($ARGV[0] =~ /^-/) { shift @ARGV } # Remove options from @ARGV array
if ($#ARGV > 1) { $SHOW_FILENAME = 1 }
$REGEX = shift @ARGV;
$REGEX =~ s/^\///;
$REGEX =~ s/\/$//;
for ($i=0; $i <= $#ARGV; $i++) {
if ($opt_r && -d $ARGV[$i]) {
find(\&wanted, $ARGV[$i]);
}
else {
if (-d $ARGV[$i]) {
print "$0: $ARGV[$i] is a directory.\n";
}
if (-f $ARGV[$i]) { perlGrep($REGEX, $ARGV[$i]) }
}
}
}
sub showUsage {
print <<END_OF_PRINT
Usage: perlgrep.pl [OPTION]... PATTERN [FILE]...
OPTIONS:
-r Recursive search
-i Case insensitive
END_OF_PRINT
}
sub wanted {
&perlGrep($REGEX, $File::Find::name);
}
sub perlGrep {
$r = shift;
$f = shift;
$r =~ s/^m\///;
$r =~ s/^\///;
$r =~ s/\/$//;
#$f = "/usr/include/$f";
if (-T "$f") {
open(FILE, $f) || warn "Cannot open $f: $!";
while (<FILE>) {
if (/$r/) {
if ($SHOW_FILENAME) { print $f, ":" }
print;
}
}
}
close(FILE);
}