in reply to print lines which are not reverse duplicates

It should become pretty clear why the match fails if you add one diagnostic print to display both the search pattern and the string to be searched in.

use strict; use warnings; while(<DATA>) { my $comment_author1; my $comment_author2; my $interactions; if( $_ =~ /(.*?),(.*?),(.*?)$/gm) { $comment_author1 = $1; $comment_author2 = $2; $interactions = $3; print "DEBUG: Looking for '$comment_author2,$comment_author1' in $ +_\n"; if( $_ =~ "$comment_author2,$comment_author1") { print "no match\n"; } else { print "$comment_author1,$comment_author2,$interactions\n"; } } } __DATA__ personA,personB,10 personB,personA,190 personA,personC,23 personA,personD,43 personE,personF,10

Do you see now where your logic has gone wrong? I think if you had used consistent indentation it might have been clear from the outset:

use strict; use warnings; while (<DATA>) { my $comment_author1; my $comment_author2; my $interactions; if ($_ =~ /(.*?),(.*?),(.*?)$/gm) { $comment_author1 = $1; $comment_author2 = $2; $interactions = $3; print "DEBUG: Looking for '$comment_author2,$comment_author1' +in $_\n"; if ($_ =~ "$comment_author2,$comment_author1") { print "no match\n"; } else { print "$comment_author1,$comment_author2,$interactions\n"; } } } __DATA__ personA,personB,10 personB,personA,190 personA,personC,23 personA,personD,43 personE,personF,10

Replies are listed 'Best First'.
Re^2: print lines which are not reverse duplicates
by LanX (Saint) on Nov 25, 2018 at 13:23 UTC
    It seems like we interpreted the question differently. :)

    While you replied to the "code", I replied to the "data"

    When looking at the OP's code ...

    $_ =~ "$comment_author2,$comment_author1"

    it seems like the OP wants to exclude lines of the form personA,personA,10 , i.e. 1. and 2. person are equal

    But in the description he asked to exclude the first two lines:

    personA,personB,10 personB,personA,190

    where the relation was reversed.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Re^2: print lines which are not reverse duplicates
by 1nickt (Canon) on Nov 25, 2018 at 11:56 UTC

    <puzzled>That still prints all the lines. How should $_ also contain the reverse of what it contains?</puzzled>


    The way forward always starts with a minimal test.

      The code in my post is not intended to be a solution, 1nickt, as it is functionally no different from that in the OP. It's an example of debugging/diagnosing the problem and is intended to set Maire on the path. Your question here is precisely what I was hoping that Maire would ask.

Re^2: print lines which are not reverse duplicates
by Maire (Scribe) on Nov 26, 2018 at 08:01 UTC
    Ah, I knew that I was doing something really silly, but I couldn't wrap my head around what was going wrong. Thank you for the clarification!