in reply to Comparing strings works in Windows but not Linux

The two most common reasons are

  1. Different line endings: Windows uses CR-LF, Linux just LF
  2. Different character encodings: On Windows, CP-* and UTF-16LE are very often used, on Linux UTF-8 is used more often
Perl 6 - links to (nearly) everything that is Perl 6.
  • Comment on Re: Comparing strings works in Windows but not Linux

Replies are listed 'Best First'.
Re^2: Comparing strings works in Windows but not Linux
by Anonymous Monk on Nov 07, 2010 at 17:38 UTC

    The code is included below:

    foreach my $word (@words) { chomp($word); foreach my $posWord (@positiveWords) { chomp($posWord); if ( lc($word) eq $posWord) { $numPosWords++; last; } } foreach my $negWord (@negativeWords) { chomp($negWord); if ( lc($word) eq $negWord) { $numNegWords++; last; } } }

    The input files are lists of words, one word on each line. For example, the list of positive words would be:

    good

    excellent

    outstanding

    The text file is a movie review file, written in paragraph form, and I have to find positive and negative words by comparing each word in the text file to the positive/negative lists.

      chomp will not be enough to remove whitespace at the end of the line if your text file was created on a Windows machine (or with Windows line endings) and is then used on a Unix machine (or with Unix line endings). Use a regular expression to strip all whitespace from the end of the line(s):

      $negWord =~ s/\s+$//;
        Thank you, that worked for me, I appreciate it,