अगर मैं इस तरह एक सरल पर्ल स्क्रिप्ट चलाता हूं (लिनक्स पर, बैश के साथ),
$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
बैकटीक्स में