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


in reply to Re^3: Make my script faster and more efficient
in thread Make my script faster and more efficient

Indeed so: CRs can sneak in and ruin your day.

Looking at:  $_ =~ s/[\r\n]+\z//s ; makes me twitch a bit, since the values of "\r" and "\n" can vary. However, the best known case of  "\n" ne "\x0A" is (old) Mac systems where  "\n" eq "\x0D" and  "\r" eq "\x0A" , so  [\r\n] appears safe. [Nevertheless, I haven't found anything that guarantees that "\n" and "\r" are duals. perlport touches on systems where they aren't ASCII at all, but that's a whole other world of pain.]

Anyway, I favour:  $_ =~ s/\s+\z// ; on the basis that it finesses the issue and gets rid of any other trailing whitespace -- two birds, one stone.

Mind you, I have seen "\s" defined to be [ \t\n\r\f] -- but current perlreref says it's "whitespace".