Прежде всего, ваши 2 массива должны быть написаны правильно.
@a = ("abc","def","efg","ghy","klm","ghn");
@b = ("def","efg","ghy","klm","ghn","klm");
Во-вторых, для произвольных массивов (например, массивов, элементы которых могут быть ссылками на другие структуры данных) вы можете использовать Data::Compare
.
Для массивов, элементы которых являются скалярными, вы можете выполнить сравнение, используя List::MoreUtils
pairwise BLOCK ARRAY1 ARRAY2
, где BLOCK - ваша процедура сравнения. Вы можете эмулировать pairwise
(если у вас нет доступа List :: MoreUtils) через:
if (@a != @b) {
$equals = 0;
} else {
$equals = 1;
foreach (my $i = 0; $i < @a; $i++) {
# Ideally, check for undef/value comparison here as well
if ($a[$i] != $b[$i]) { # use "ne" if elements are strings, not numbers
# Or you can use generic sub comparing 2 values
$equals = 0;
last;
}
}
}
P.S. Я не уверен, но List :: Compare всегда может отсортировать списки. Я не уверен, что он может делать парные сравнения.