[EMAIL PROTECTED] said...
> I don't know how this works, But I have seen this regexp comparison it in
> perlop man pages. It has been very good regexp.
> Can anyone explain this for me.
I'll add some comments that may help explain some of what was left out:
#! /usr/bin/perl
# open the file
open(fileHandle, "Cfile") || die "can't open the file ";
# read the file in scalar
while(<fileHandle>) { # This is the Perl idiom for "while there
# are still lines left in the file..."
$program .= $_; # This adds the current line (including
# the newline at the end) to the variable
# called $program. At the end of this loop,
# $program contains the entire file living
# named 'Cfile'.
}
# Delete (most) C comments.
$program =~ s {
/\* # Match the opening delimiter.
.*? # Match a minimal number of characters.
\*/ # Match the closing delimiter.
} []gsx;
# This is a variation on the s///; operator, which replaces
# the thing between the first two slashes with the thing between
# the last two slashes. Perl lets you choose something other than
# a slash, if you want. This regex matches C comments, by looking
# for "/*" (the '*' is a wildcard, so you have to 'escape' it by
# putting a backslash in front of it) -- followed by as few characters
# as possible (.* means "anything, zero or more times, '?' means
# "do this only until the "next thing" comes up). The "next thing" in
# this regex is "*/" - the closing delimiter of C comments. Again, you
# have to escape the splat, so that Perl doesn't treat it specially.
#
# after the "[]", the 'g' means "match globally", that is, look
# for as many matches as you can.
# the 's' means treat the input as a single line. That is, don't
# stop looking for a match when you hit a newline.
# the 'x' means "let me have comments in my regex."
print $program