in reply to Re: Not sure what I am doing wrong
in thread Not sure what I am doing wrong

Thanks for the quick reply. I used the code above which looks to be correct and I get the following error message? Not 100% sure why that error is coming up.
Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11802. Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11803. Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11804. Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11805. Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11806. Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11807. Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11808. Use of uninitialized value in regexp compilation at dns.pl line 23, <U +NZIP> line 11809.
Did you mean to put the following out of the sub()?
open(RECORDS, "/tmp/logs/records.txt") or die "Could not open records +file: $!"; local $/ = undef; # Ignoring binmode as its a text file my $RE = join '|', <RECORDS>; close RECORDS;
I tried moving the stuff above inside the sub and printed the $RE var and got the correct records but got no results. Not sure what the problem is. All in all what I am trying to figure out if there is a faster way to search for each of the 100 key entries in my file against all the logs files. The current problem(if thats what you want to call it) is that it takes almost 1 hour to search for 100 keywords against each of the log files which are about 15-18 MB in size. Thanks again for all the HELP!!

Replies are listed 'Best First'.
Re^3: Not sure what I am doing wrong
by Bloodnok (Vicar) on Nov 24, 2008 at 16:37 UTC
    Yep, moving that block saves an awful lot of time - as I said, with the block moved, you open the records.txt once only - c/w once per file.

    As far as the uninit value is concerned, try...

    use File::Find; my $DIR = "/tmp/logs/"; open(RECORDS, "/tmp/logs/records.txt") or die "Could not open records +file: $!"; local $/ = undef; # Ignoring binmode as its a text file my $RE = join '|', <RECORDS>; close RECORDS; find(\&queries, $DIR);
    Oops, sorry, my fault - as shown, the $RE lexical variable wasn't defined until after use (by the queries sub).

    A user level that continues to overstate my experience :-))