in reply to Re^2: Printing a String (TOO stupid?)
in thread Printing a String (TOO stupid?)

Updated

I was wrong. Somehow, I remembered it working differently.

But { local $/ = ''; chomp($x); } seems to work. Needs more testing and I'm not sure there would still be a performance benefit.


Try chomp; chomp; instead of chop; chop;

chomp is conditional. Being built in, I would expect it to be more efficient than a regex.

Replies are listed 'Best First'.
Re^4: Printing a String (TOO stupid?)
by Laurent_R (Canon) on Jun 18, 2014 at 18:46 UTC
    That's wrong in this specific case. Here, you have a Windows file with "\r\n" line ends. Under Unix, the chomp command will remove only the "\n" part, but not the "\r". Using chomp a second time will not remove the "\r" under Unix. So the printing goes back to line start and the three !!! overwrite the beginning of the line.

    The best solution here is to remove the "\r":

    chomp $line; $line =~ s/\r//g;
    or
    $line =~ s/[\r\n]//g;