में दो (संभावित रूप से) अपरिष्कृत चर की तुलना करें मैं दो चरों की तुलना करने की कोशिश कर रहा हूं जिनमें आम तौर पर तार होते हैं। ये चर डेटाबेस से उत्पन्न होते हैं, $var1
एक डीबी से और $var2
दूसरे से। जब मैं उन्हें एक लूप में तुलना करता हूं तो मैं ne
ऑपरेटर का उपयोग करता हूं। हालांकि ऐसे समय होते हैं जब मैं ये चर null
या undef
हैं। तुलना के रूप में निम्नानुसार किया जाता है:perl
foreach my $var1 (@$varlist)
{
if ($var1 ne $var2)
{
print "vars are not equal";
}
}
मुद्दा यह है कि अगर $var1
या $var2
undef
तो कर रहे हैं मैं कोई त्रुटि मिलती है। हालांकि, मुझे तब मानों की तुलना करने में सक्षम होना चाहिए जैसे कि undef b/c मुझे उन्हें लिखना होगा। मैंने वैरिएबल को एक स्ट्रिंग 'न्यूल' में परिवर्तित करने पर विचार किया और फिर वापस लेकिन यह अक्षम लग रहा था।
इसे ठीक करने का कोई तरीका? धन्यवाद!
अगर ''var1' परिभाषित नहीं किया गया है तो अभिव्यक्ति को मुद्रित क्यों नहीं किया जाएगा? – Prateek
यह मेरे उत्तर के लिए अधिक आधार था इसलिए मैंने इसे चुना। अंतिम उत्तर इस तरह दिखता था: 'जब तक ((परिभाषित $ var1 &&! परिभाषित $ var2) && (परिभाषित $ var1 && परिभाषित $ var2 && $ var1 eq $ var2))' – Prateek
xor का उपयोग करके एक छोटा संस्करण: 'if (($ var1 xor परिभाषित $ var2) या $ var1 ne $ var2) ' –