Patrick Andrieu: Vergleich zweier gleicher Arrays gibt false zurück

Beitrag lesen

Hallo Jeena!

nicht das selbe Array ist, aber es die beiden sind doch gleich.

Sie enthalten Elemente mit dem gleichen Wert, ja. Aber in Vorahnung einer ähnlichen Frage hatte ich gestern abend das gepostete Beispiel fortgeführt ;)

my $a = [1];  
my $b = [1];  
my $x = 1;  
my $y = 1;  
  
# $/ entspricht defaultmässig \n, wenn nicht anders definiert...  
  
print '$a: ', $a, $/;  
print '$b: ', $b, $/;  
print '$x: ', $x, $/;  
print '$y: ', $y, $/;  
  
print 'VERGLEICH $a <-> $b:', $/;  
if ($a == $b) { print "TRUE\n"; } else { print "FALSE\n"; }  
print 'VERGLEICH $x <-> $y:', $/;  
if ($x == $y) { print "TRUE\n"; } else { print "FALSE\n"; }  
print 'Jetzt dereferenzieren wir... und vergleichen somit den _Inhalt_:', $/;  
if ($a->[0] == $b->[0]) { print "TRUE\n"; } else { print "FALSE\n"; }  
print 'Jetzt stiften wir Verwirrung...:', $/;  
print \$x, $/;  
print \$y, $/;  
print 'OBJEKT-VERGLEICH FUER SKALARE $x <-> $y: ', $/;  
if (\$x == \$y) { print "TRUE\n"; } else { print "FALSE\n"; }

Ausgabe:
$a: ARRAY(0x35200)
$b: ARRAY(0x3541c)
$x: 1
$y: 1
VERGLEICH $a <-> $b:
FALSE
VERGLEICH $x <-> $y:
TRUE
Jetzt dereferenzieren wir... und vergleichen somit den _Inhalt_:
TRUE
Jetzt stiften wir Verwirrung...:
SCALAR(0x18311a0)
SCALAR(0x18311c4)
OBJEKT-VERGLEICH FUER SKALARE $x <-> $y:
FALSE

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?