in reply to Dealing with non-ascii characters when reading file.
If I change s/\r\n//g; to s/\r//g; then it prints everything ...
The substitution s/\r\n//g changes all exact sequences of \r\n to the empty string, and apparently there is no such sequence present for you say no change occurs. This might have worked better had you used the [\r\n] character class instead. The substitution s/\r//g removes all \r (carriage-return) characters, which are, I think, the root of your problem.
The substituiton s/[^[:ascii:]]//g removes all non-ASCII characters, but \r and \n are ASCII characters! The transliteration tr/\x80-\xFF//d removes all 8-bit characters outside the ASCII range, but \r \n are still ASCII characters.
Update: Adding code example:
c:\@Work\Perl\monks>perl -wMstrict -le "my $s = qq{ab-cd\tef\n\x80\x81\xaa\xab\xacfoo\rbar}; print qq{[[$s]] \n}; ;; $s =~ s/\r//g; print qq{[[$s]] \n}; ;; $s =~ s/[^[:ascii:]]//g; print qq{[[$s]] \n}; " [[ab-cd ef bar]] oo [[ab-cd ef Çü¬½¼foobar]] [[ab-cd ef foobar]]
|
|---|