When are people going to learn about the <code> notation?
As best as I can tell, here is what it says:
$dir = 'C:/texts/'; opendir(directory, $dir) or die "cant"; while($file=readdir directory) { next if $file =~ /^\./; $rfname = $dir.$file; # print "Found file: '$rfname'\n"; open (CONT, $rfname); while (<CONT>) { if ( $_ =~ m/[0-3]?[0-9(th)?(st)?(nd)?(rd)?]\s+(Jan(uary)?|Feb +(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)? +|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+[0-9]?[0-9]?[0-9][0-9]/ig ) { print "$file\t $_\n"; } elsif ( $_ =~ m/(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May| +Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(emb +er)?)\s+[1-3]?[0-9](th)?(nd)?(st)?(rd)?\s+[0-9]?[0-9]?[0-9][0-9]/ig ) { print "$file\t $_\n"; } } }
Looking at your code, and another response, I see your problem. You are telling it to print the entire string.
If you have Learning Perl, by our own merlyn, look at 7.3.2.3, "Parentheses as memory".
Also, from Programming Perl:
A regular expression in parentheses, (...), matches whatever the regular expression (represented by ...) matches according to Rule 2. Parentheses therefore serve as a grouping operator for quantification. Parentheses also have the side effect of remembering the matched substring for later use in a backreference (to be discussed later). This side effect can be suppressed by using (?:...) instead, which has only the grouping semantics - it doesn't store anything in $1, $2, and so on.
Look into spending $60 for the Perl CD Bookshelf. It rocks.
J. J. Horner Linux, Perl, Apache, Stronghold, Unix jhorner@knoxlug.org http://www.knoxlug.org/
In reply to RE: Problem extracting date with regex
by jjhorner
in thread Problem extracting date with regex
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |