पहले, अपने 2 सरणियों सही ढंग से लिखे जाने की जरूरत है।
@a = ("abc","def","efg","ghy","klm","ghn");
@b = ("def","efg","ghy","klm","ghn","klm");
सभी का दूसरा, मनमाने ढंग से सरणियों (जैसे सरणियों जिसका तत्वों अन्य डेटा संरचना के लिए संदर्भ हो सकता है) आप Data::Compare
उपयोग कर सकते हैं के लिए।
उन तत्वों के लिए जिनके तत्व स्केलर हैं, आप List::MoreUtils
pairwise BLOCK ARRAY1 ARRAY2
का उपयोग करके तुलना कर सकते हैं, जहां ब्लॉक आपकी तुलना subroutine है। आप pairwise
का अनुकरण कर सकते हैं के माध्यम से (यदि आप सूची :: 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;
}
}
}
पी.एस. मुझे यकीन नहीं है लेकिन List::Compare हमेशा सूचियों को सॉर्ट कर सकता है। मुझे यकीन नहीं है कि यह जोड़ों की तुलना कर सकता है।
क्योंकि आपका प्रश्न अस्पष्ट है, आपको दो प्रकार के उत्तर मिल रहे हैं: (1) जो जोड़ी के मिलान की खोज करते हैं, जैसे '$ a [$ i] eq $ b [$ i] '; और (2) जो किसी भी मैच की खोज करते हैं, जैसे '$ a [$ i] eq $ b [$ j] '। आपका लक्ष्य क्या है? – FMc
http://stackoverflow.com/questions/1609467/in-perl-is-there-a-built-in-way-to-compare-two-arrays-for-equality –
@Sinan का संभावित डुप्लिकेट: यह प्रश्न आपको "संभावित डुप्लिकेट" के रूप में चिह्नित इस जैसा नहीं है। यह दो सरणी के सभी तत्वों की तुलना करने के बारे में है, लेकिन यह एक आम तत्व खोजने के बारे में है। –