$str =~ s/(^|\n)[\n\s]*/$1/g;Would it be possible to ask if it can be broken down step by step.
Here's one way to look at this regex: The replacement part is $1, so that means that whatever is matched by the first capture group (^|\n) is kept, while everything else ([\n\s]*) is removed. (^|\n) matches either: (1) ^ means to match at the beginning of the string, so any newlines or whitespace [\n\s]* at the beginning of the string are removed, or (2) \n, which means that any newlines or whitespace [\n\s]* after that newline character are removed, but the first newline character is kept. This is how empty lines, which are usually just a sequence of two newline characters \n\n, are changed into a single newline character, meaning the empty line(s) are removed.
If you're unsure of any of these things, then I can recommend perlretut.
In reply to Re^3: Removing empty line(s) with regex in a multiple strings in a variable
by haukex
in thread Removing empty line(s) with regex in a multiple strings in a variable
by monkfan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |