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


in reply to if elsif elsif prints all three.

I think the idea of "leave it alone" is where you get confused. next means skip the rest of the loop, so the line containing best1collect will not be printed to OUT. Without referring to "leaving it alone," ask yourself these questions: 1) should the lines containing "best1collect" be printed? If yes, then you don't want to call next in that first elsif. 2) Should the lines containing "syslogd" be printed? If no, then you probably do want to call next after printing $newline.

Remember, you're reading from one file and writing to another. Any lines that you skip will not be written to that second file. That's why "leave it alone" is the wrong way to think about it.