You've received good answers already, but I would add that the syntax could be simplified. Assuming that your target string is in the $_ default variable because you're reading the file in a while loop (for example a while (<$IN>) { # ... construct, assuming $IN is your file descriptor), then you don't need to test for "definedness," because the while loop already does that check. You also don't need the extra $MODULE_NAME variable; using directly the $_ variable makes the regex syntax simpler (if you don't specify any target string, a regex will by default match against $_). So putting this together, you could have something like this:
Or, using the /x modifier already described by other monks:print "Module name = $1\n" if /(MODULE\s+\w+)\s*\(/; # Prints: Modul +e name = MODULE C17
print "Module name = $1\n" if /( MODULE \s+ \w+ ) \s* \(/x;
In reply to Re: Pattern matching
by Laurent_R
in thread Pattern matching
by nursyza
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |