boerni has asked for the wisdom of the Perl Monks concerning the following question:

Hey Monks I never realized perl behaves like this. There is a difference between (! 'a' eq 'b') and ('a' ne 'b').
#!perl use strict; use warnings; use Data::Dumper; my $s1 = 'bla'; my $s2 = 'blu'; my $r = $s1 eq $s2; print Dumper $r; if (! $s1 eq $s2) { print "$s1 and $s2 are not the same\n"; } else { print "$s1 and $s2 are the same\n"; } exit 0;
$VAR1 = ''; bla and blu are the same

The "correct" ($s1 ne $s2) works as expected. But why does (! $s1 eq $s2) not work?

Probably there is a simple explanation but I don't know it... Maybe one of you Monks can explain this.

Thank you