http://www.perlmonks.org?node_id=824901


in reply to Re: Multiple line records from a command string
in thread Multiple line records from a command string

(for Perceptor and others' sake)

In BrowserUK's code:

m[ Device \s Symmetrix \s Name \s+ : \s+ ( [^\n]+ ) .+? Device \s Serial \s ID \s+ : \s+ ( \d+ ) .+? KiloBytes \s+ : \s+ ( \d+ ) .+? SCSI-3 \s Persistent \s Reserve : \s+ ( \S+ ) .+? ]smx . . .

The regex flags smx mean the following:

s makes . match anything, including newlines. (In Perl, by default, . does not match newlines.)

m causes the characters ^ and $ to match, respectively, at the beginning and ending of lines instead of the beginning and ending of strings

x is for "Extended Formatting" or "Whitespace is not significant." Among other things, this allows the expression to span several lines without matching literal white space.

Using these three flags in Perl regexes is a best practice described by Damian Conway in Perl Best Practices pages 236-241.