in reply to Re^3: 5.8.8 stat and file test fails
in thread 5.8.8 stat and file test fails

The response I get from adding those lines is.

zip_file hex 2f6261762f7261643173312f64706461696c7962696c6c2f6363702f4f323030385f385f31385f54696d655f395f32372e7a69700d
WARNING zip_file has unprintable characters
]ip_file [/bav/rad1s1/dpdailybill/ccp/O2008_8_18_Time_9_27.zip
How do I remove these characters if they do exist?

Replies are listed 'Best First'.
Re^5: 5.8.8 stat and file test fails
by kyle (Abbot) on Aug 19, 2008 at 15:09 UTC

    It looks like a trailing carriage return. Rip it out this way:

    $new_file =~ tr/\r//d;

    You could get rid of every unprintable character like this:

    $new_file =~ s/[:^print:]//g;
      Safer I think just trailing :)
      s~[:^print:]+?$~~;
      $new_file =~ tr/\r//d;
      This line took care of the issue. Thanks for the help.

        I stared at this for a while before the penny dropped...

        ...so, the lesson here is that chomp is a potential GOTCHA... (which most of the time is hidden from us by PerlIO)

        ... in particular, on LF line terminated systems, network text with CRLF line endings will only have part of the line ending removed by chomp -- unless $/ is set to CRLF. [And on CR line terminated systems chomp (by default) does nothing with CRLF !]

        Unless someone has a better idea, s/\s+$// looks like a good replacement for chomp, with the small bonus of stripping any trailing spaces and tabs (and FF).

        tr/\r\n//d looks a bit fierce -- since it will, of course, remove any number of \r or \n from anywhere in the string, which may or may not be what one wants... [Not to mention the ambiguous nature of \n !]