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


in reply to Split using special charater data type scalar

$text =~ s/[\s|\n]*//g;

If we expand the \s (whitespace) character class we get:

$text =~ s/[ \t\n\r\f|\n]*//g;

So why are you including the \n (newline) character twice?    And why are you including the | (vertical bar) character, which has nothing to do with whitespace?    And matching zero characters is inefficient.    What you probably want is:

$text =~ s/\s+//g;


$text =~ s/^[---]+//;

A character class ignores multiple identical characters so what you effectively have is:

$text =~ s/^[-]+//;

Which could be written more simply without the character class:

$text =~ s/^-+//;