projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove Prot.pm, sort %valid fields
[spider.git]
/
perl
/
grepdbg
diff --git
a/perl/grepdbg
b/perl/grepdbg
index 80a918a07cc7a0a6a998d15240dd26746711bd75..06f7df635d630e44944a7154cc6243e2038e4823 100755
(executable)
--- a/
perl/grepdbg
+++ b/
perl/grepdbg
@@
-12,7
+12,9
@@
# ten lines including the line matching the regular expression.
#
# <regexp> is the regular expression you are searching for,
# ten lines including the line matching the regular expression.
#
# <regexp> is the regular expression you are searching for,
-# a caseless search is done
+# a caseless search is done. There can be more than one <regexp>
+# a <regexp> preceeded by a '!' is treated as NOT <regexp>. Each
+# <regexp> is implcitly ANDed together.
#
# If you specify something that likes a filename and that filename
# has a .pm on the end of it and it exists then rather than doing
#
# If you specify something that likes a filename and that filename
# has a .pm on the end of it and it exists then rather than doing
@@
-47,8
+49,9
@@
$fp = DXLog::new('debug', 'dat', 'd');
$today = $fp->unixtoj(time());
my $nolines = 1;
my @prev;
$today = $fp->unixtoj(time());
my $nolines = 1;
my @prev;
+my @patt;
-for my $arg (@ARGV) {
+for
each
my $arg (@ARGV) {
if ($arg =~ /^-/) {
$arg =~ s/^-//o;
if ($arg =~ /^\s*\-+(?:[h\?]e?l?p?)/) {
if ($arg =~ /^-/) {
$arg =~ s/^-//o;
if ($arg =~ /^\s*\-+(?:[h\?]e?l?p?)/) {
@@
-68,12
+71,11
@@
for my $arg (@ARGV) {
die "$arg not found";
}
} else {
die "$arg not found";
}
} else {
- $string = $arg;
- last;
+ push @patt, $arg;
}
}
}
}
-
$string ||= '.*'
;
+
push @patt, '.*' unless @patt
;
push @list, "0" unless @list;
for my $entry (@list) {
push @list, "0" unless @list;
for my $entry (@list) {
@@
-104,7
+106,17
@@
sub process
chomp $line;
push @prev, $line;
shift @prev while @prev > $nolines;
chomp $line;
push @prev, $line;
shift @prev while @prev > $nolines;
- if ($line =~ m{$string}io) {
+ my $flag = 0;
+ foreach my $p (@patt) {
+ if ($p =~ /^!/) {
+ my $r = substr $p, 1;
+ last if $line =~ m{$r}i;
+ } else {
+ last unless $line =~ m{$p}i;
+ }
+ ++$flag;
+ }
+ if ($flag == @patt) {
for (@prev) {
s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%02X", ord($1))/eg;
my ($t, $l) = split /\^/, $_, 2;
for (@prev) {
s/([\x00-\x1f\x7f-\xff])/sprintf("\\x%02X", ord($1))/eg;
my ($t, $l) = split /\^/, $_, 2;
@@
-117,6
+129,6
@@
sub process
sub usage
{
sub usage
{
- die "usage: grepdbg [nn days before] [-nnn lines before] [<
regexp>|<perl file name>]
\n";
+ die "usage: grepdbg [nn days before] [-nnn lines before] [<
perl file name>] [<regexp>|!<regexp>]...
\n";
}
exit(0);
}
exit(0);