पर्ल ऑपरेटर की प्राथमिकता के कारण कथन का विश्लेषण इस प्रकार किया जा रहा है:
($condition ? $a = 2 : $a ) = 3 ;
क्योंकि?: ऑपरेटर एक असाइन करने योग्य परिणाम उत्पन्न करता है, 3 स्थिति के परिणाम के लिए आवंटित किया जाता है।
जब $ शर्त सही होती है तो इसका अर्थ है $ a = 2 = 3 $ a = 3 दे रहा है
जब $ शर्त गलत होती है तो इसका मतलब है कि एक = 3 $ a = 3 दे रहा है
इसे लिखने का सही तरीका है
$a = $condition ? 2 : 3;
आम तौर पर, आपको वास्तव में असाइनमेंट करने के लिए सशर्त उपयोग करने की आदत से बाहर निकलना चाहिए, जैसा कि मूल उदाहरण में - यह ऐसी चीज है जो पर्ल को केवल लिखने के लिए प्रतिष्ठा प्राप्त करती है।
अंगूठे का एक अच्छा नियम यह है कि सशर्त केवल साधारण मूल्यों के लिए हैं, कभी साइड इफेक्ट्स के साथ अभिव्यक्ति नहीं करते हैं। जब आप या किसी और को अब से आठ महीने इस कोड को पढ़ने की जरूरत है, तो क्या आप इसे इस तरह पढ़ना पसंद करेंगे?
$x < 3 ? foo($x) : bar($y);
या इस तरह?
if ($x < 3) {
$foo($x);
} else {
$bar($y);
}