Kịch bản lệnh thông minh sau khớp với các lát của hai mảng. Lúc đầu, cả hai mảng đều giống nhau và tôi nhận được kết quả hợp lý. Sau đó, tôi thay đổi một trong những mảng và thông minh phù hợp với hai lát mới, nhưng nó vẫn nói rằng các lát là giống hệt nhau. Tuy nhiên, khi tôi sao chép các lát vào mảng, thông minh phù hợp với các mảng cho thấy rằng chúng thực sự khác nhau.Tại sao smartmatch trả về true khi so sánh các mảng mảng khác nhau?
Kịch bản:
#!/usr/bin/perl
use warnings;
use strict;
use diagnostics;
my @x = qw (one two);
my @y = qw (one two);
my @x_s;
my @y_s;
print "Before change: values are the same:\n";
@x_s = @x[0,1];
@y_s = @y[0,1];
print "\@x_s: @x_s\n";
print +(@x[0,1] ~~ @y[0,1]) ? "equal\n" : "not equal\n";
print +(@x_s ~~ @y_s) ? "equal\n" : "not equal\n";
$x[0]='three';
print "After change: values should be different:\n";
@x_s = @x[0,1];
@y_s = @y[0,1];
print "\@x_s: @x_s\n";
print +(@x[0,1] ~~ @y[0,1]) ? "equal\n" : "not equal\n";
print +(@x_s ~~ @y_s) ? "equal\n" : "not equal\n";
Sản lượng:
Before change: values are the same:
@x_s: one two
equal
equal
After change: values should be different:
@x_s: three two
equal
not equal
Tôi đang sử dụng Perl 5.10.1, và điều này xảy ra cho cả hai mảng lát và băm lát. Lý do tại sao điều này xảy ra?
Bạn đang sử dụng phiên bản Perl nào? Với 'v5.14.2' tôi nhận' bằng', 'bằng' và' không bằng', 'không bằng'. – flesk