/ / 'T' क्यों, "बैकटिक" कॉल से लौटाया गया है, सारणी में विस्तारित किया गया है? सभी वर्णों का विस्तार क्या है? - पर्ल, बैश

'टी' क्यों है, "बैकटिक" कॉल से लौटा, टैबलेट में विस्तारित? सभी पात्रों का विस्तार क्या किया जाता है? - पर्ल, बाश

अगर मैं इस तरह एक सरल पर्ल स्क्रिप्ट चलाता हूं (लिनक्स पर, बैश के साथ),

$to_run = q(echo "t");
$res = `$to_run`;
print $res

मैं उम्मीद करता हूँ t मुद्रित किया जाएगा - वह है, बैकलैश कैरेक्टर और "टी" कैरेक्टर। दरअसल, अगर मैं सिर्फ बैश में दौड़ता हूं

echo "t"

समझा t। हालाँकि, पर्ल स्क्रिप्ट टैबलेटर को प्रिंट करती है।

टैबलेटर में विस्तार क्यों किया गया है $res? क्या सभी पात्रों का विस्तार होता है? और, सबसे महत्वपूर्ण बात, मैं इसे विस्तार से कैसे रोकूं?

उत्तर:

जवाब के लिए 5 № 1

बैकटिक्स का उपयोग करके मूल्यांकन किया जाता है /bin/shकी परवाह किए बिना आप जो भी खोल का उपयोग करना चाहते हैं, और यह हो सकता है POSIX XSI के अनुरूप संस्करण echo के द्वारा लागू किया गया sh कि परिवर्तित हो रहा है t एक टैब के लिए। इसे चलाकर अपने आप को आज़माएं echo "t" के भीतर sh.

इस व्यवहार से बचने के लिए, उपयोग करने की कोशिश कर रहा है printf "%sn" के बजाय echo बैकटीक्स में