in reply to Pattern Matching in Cygwin Perl vs. Win32 Perl

My first guess would be that your WORD.LST has crlf line endings, and chomp is only removing the lf.
  • Comment on Re: Pattern Matching in Cygwin Perl vs. Win32 Perl

Replies are listed 'Best First'.
Re^2: Pattern Matching in Cygwin Perl vs. Win32 Perl
by ggvaidya (Pilgrim) on Aug 27, 2008 at 04:57 UTC
    chomp removes anything which is in $/, which is set to "\n" by default. So it ought to remove both CR and LF on Windows, I think.
      So it ought to remove both CR and LF on Windows, I think.

      Isn't it better to know?

      C:\>perl -le"print $/" | od -tacx1 0000000 cr nl cr nl \r \n \r \n 0d 0a 0d 0a 0000004 C:\>perl -le"print unpack q,H*,,$/" | od -tacx1 0000000 0 a cr nl 0 a \r \n 30 61 0d 0a 0000004 C:\>
      Furthermore, perlport says
      In most operating systems, lines in files are terminated by newlines. +Just what is used as a newline may vary from OS to OS. Unix tradition +ally uses \012, one type of DOSish I/O uses \015\012, and Mac OS uses + \015. Perl uses \n to represent the "logical" newline, where what is logical + may depend on the platform in use. In MacPerl, \n always means \015. + In DOSish perls, \n usually means \012, but when accessing a file in + "text" mode, STDIO translates it to (or from) \015\012, depending on + whether you're reading or writing. Unix does the same thing on ttys +in canonical mode. \015\012 is commonly referred to as CRLF.
      But "\n" is not both CR and LF. It is a single character, and is LF on almost all systems. On Windows, it can be translated to and from CRLF when reading/writing a file, but that happens during the IO, not at any other time.