in reply to Pattern matching
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;
|
|---|