Here document
کمپیوٹنگ میں، یہاں دستاویز (یہاں-دستاویز، یہاں-متن، ہیرڈوک، یہاں، یہاں-سٹرنگ یا یہاں-اسکرپٹ) ایک فائل لفظی یا ان پٹ اسٹریم لفظی ہے: یہ سورس کوڈ فائل کا ایک حصہ ہے جسے ایسا سمجھا جاتا ہے جیسے یہ ایک علیحدہ فائل ہو۔ یہ اصطلاح ملٹی لائن سٹرنگ لیٹرلز کی ایک شکل کے لیے بھی استعمال ہوتی ہے جو متن میں لائن بریکس اور دیگر وائٹ اسپیس (بشمول انڈینٹیشن) کو محفوظ رکھتے ہوئے اسی طرح کے نحو کا استعمال کرتی ہے۔ یہاں دستاویزات یونکس شیل سے نکلتی ہیں، اور بورن شیل (ایس ایچ)، سی شیل (سی ایس ایچ)، ٹی سی ایس ایچ (ٹی سی ایس ایچ)، کارن شیل (کے ایس ایچ)، بورن اگین شیل (بیش)، اور زیڈ شیل (زیڈ ایس ایچ) میں پائی جاتی ہیں۔ یہاں دستاویز طرز کے سٹرنگ لیٹرلز مختلف اعلی سطحی زبانوں میں پائے جاتے ہیں، خاص طور پر پرل پروگرامنگ زبان (یونکس شیل سے متاثر نحو) اور پرل سے متاثر زبانیں، جیسے پی ایچ پی اور روبی۔ جاوا اسکرپٹ ٹیمپلیٹ لیٹرلز کے ذریعے بھی اس فعالیت کی حمایت کرتا ہے، یہ خصوصیت اس کی چھٹی ترمیم (ای ایس 6) میں شامل کی گئی ہے۔ دیگر اعلی سطحی زبانوں جیسے ازگر، جولیا اور ٹی سی ایل میں ملٹی لائن تاروں کے لیے دیگر سہولیات موجود ہیں۔ یہاں دستاویزات کو یا تو فائلوں یا سٹرنگ کے طور پر مانا جا سکتا ہے۔ کچھ خول انہیں ایک فارمیٹ سٹرنگ لفظی کے طور پر پیش کرتے ہیں، جو لفظی کے اندر متغیر متبادل اور کمانڈ متبادل کی اجازت دیتا ہے۔ جائزہ یہاں کے دستاویزات کے لیے سب سے عام نحو، جو یونکس شیلز میں شروع ہوتا ہے، <<کے بعد ایک حد بندی شناخت کنندہ (اکثر لفظ EOF یا END) ہوتا ہے، جس کے بعد اگلی سطر سے شروع ہونے والے متن کا حوالہ دیا جاتا ہے، اور پھر اسی حد بندی شناخت کنندہ کے ذریعے اپنی لائن پر بند کیا جاتا ہے۔ یہ نحو اس لیے ہے کیونکہ یہاں دستاویزات رسمی طور پر اسٹریم لیٹرلز ہیں، اور یہاں دستاویز کے مواد کو اکثر سابقہ کمانڈ یا کیورینٹ شیل اسکرپٹ/ایگزیکٹوبل کے اسٹین (معیاری ان پٹ) پر ری ڈائریکٹ کیا جاتا ہے۔ یہاں دستاویز کا نحو ان پٹ ری ڈائریکشن کے لیے شیل نحو سے ملتا جلتا ہے، جو کہ <"درج ذیل فائل سے ان پٹ لیں" ہے۔ دوسری زبانیں اکثر کافی حد تک اسی طرح کے نحو کا استعمال کرتی ہیں، لیکن نحو اور اصل فعالیت کی تفصیلات نمایاں طور پر مختلف ہو سکتی ہیں۔ جب صرف سٹرنگ لیٹرلز کے لیے استعمال کیا جاتا ہے، تو <<سمت کی نشاندہی نہیں کرتا، بلکہ محض ایک ابتدائی حد بندی کنونشن ہے۔ کچھ زبانوں میں، جیسے روبی، <<کو ان پٹ ری ڈائریکشن کے لیے بھی استعمال کیا جاتا ہے، اس طرح اگر کوئی یہاں موجود دستاویز سٹرنگ سے لفظی طور پر ری ڈائریکٹ کرنا چاہتا ہے تو اس کے نتیجے میں <<کو دو بار استعمال کیا جاتا ہے۔ فائل لیٹرلز تنگ الفاظ میں، یہاں دستاویزات فائل لیٹرلز یا اسٹریم لیٹرلز ہیں۔ یہ یونکس شیل میں شروع ہوتے ہیں، حالانکہ اسی طرح کی سہولیات کچھ دوسری زبانوں میں دستیاب ہیں۔ یونکس شیلز یہاں کے دستاویزات بہت سے یونکس شیلز میں دستیاب ہیں۔ مندرجہ ذیل مثال میں، متن کو ہیئر دستاویز کا استعمال کرتے ہوئے ٹر کمانڈ (چھوٹے سے بڑے حرف میں ترجمہ) میں منتقل کیا جاتا ہے۔ یہ شیل فائل میں ہو سکتا ہے، یا پرامپٹ پر انٹرایکٹو طور پر درج کیا جا سکتا ہے۔ $LANG = C TR a-z A-Z <<END> ایک دو تین> چار پانچ چھ> ایک دو تین چار پانچ چھ اختتام کو حد بندی شناخت کے طور پر استعمال کیا گیا تھا۔ اس نے یہاں دستاویز کے آغاز اور اختتام کی وضاحت کی۔ ری ڈائریکٹ اور ڈیلیمیٹنگ شناخت کنندہ کو کسی جگہ سے الگ کرنے کی ضرورت نہیں ہے: یا دونوں یکساں طور پر اچھی طرح سے کام کرتے ہیں۔ پہلے سے طے شدہ طور پر، طرز عمل بڑی حد تک ڈبل کوٹس کے مندرجات سے ملتا جلتا ہے: متغیر ناموں کو ان کی اقدار سے تبدیل کیا جاتا ہے، بیکٹیکس کے اندر کمانڈوں کا جائزہ لیا جاتا ہے، وغیرہ۔ اس کو لیبل کے کسی بھی حصے کا حوالہ دے کر غیر فعال کیا جا سکتا ہے، جو اس کے بعد غیر حوالہ شدہ قدر سے ختم ہوتا ہے ؛ یہ طرز عمل بنیادی طور پر اس سے ملتا جلتا ہے اگر مواد کو ایک اقتباس میں منسلک کیا گیا ہو۔ اس طرح مثال کے طور پر اسے واحد حوالوں میں ترتیب دے کر: $cat <<'EOF'>\$ورکنگ ڈائر "$PWD" 'pwd'> EOF\ $ورکنگ ڈائر "$PWD" 'pwd' ڈبل حوالوں کا بھی استعمال کیا جا سکتا ہے، لیکن یہ الجھن کا باعث ہے، کیونکہ توسیع ڈبل حوالہ شدہ سٹرنگ میں ہوتی ہے، لیکن ڈبل حوالہ شدہ حد بندی کے ساتھ یہاں دستاویز میں نہیں ہوتی ہے۔ سنگل اور ڈبل حوالہ شدہ حد بندی کو کچھ دوسری زبانوں میں ممتاز کیا جاتا ہے، خاص طور پر پرل (نیچے دیکھیں)، جہاں طرز عمل متعلقہ سٹرنگ حوالہ کے متوازی ہوتا ہے۔ پوزیکس شیل میں لیکن سی ایس ایچ/ٹی سی ایس ایچ میں نہیں، (یعنی) میں مائنس سائن شامل کریں۔ اس کا اثر ہے کہ سرکردہ ٹیبز کو نظر انداز کر دیا جاتا ہے۔ یہ یہاں شیل اسکرپٹ میں دستاویزات کو ان کی قیمت کو تبدیل کیے بغیر (بنیادی طور پر موجودہ انڈینٹیشن کے ساتھ صف بندی کے لیے) انڈینٹ کرنے کی اجازت دیتا ہے: ایک اسکرپٹ جس میں: LANG = C tr a-z A-Z <<-END _ TEXT یہاں ڈاکس کے ساتھ <<-ایک واحد خلائی کردار (یعنی. 0x20) اس لائن کے آغاز میں ہے یہ لائن ایک واحد ٹیب کردار یعنی 0x09 سے شروع ہوتی ہے جیسا کہ اگلی لائن اینڈ _ ٹیکسٹ ایکو کرتا ہے مطلوبہ اختتام اس لائن ایکو سے پہلے تھا اور ان پر ٹرا ایکو + + + + + + + + + + + + + + + + + LANG = C tR a-z A-Z <<END _ TEXT کے ذریعے کارروائی نہیں کی گئی تھی۔ 0x20) اس لائن کے آغاز میں ہے یہ لائن ایک واحد ٹی اے بی کردار یعنی 0x09 سے شروع ہوتی ہے جیسا کہ اگلی لائن اینڈ _ ٹی ای ایکس ٹی ایکو کرتا ہے مطلوبہ اختتام اس لائن سے پہلے تھا، ایکو لیکن چونکہ حد بندی شناخت کنندہ والی لائن ٹی اے بی سے شروع ہوئی تھی اس لیے اسے تسلیم نہیں کیا گیا تھا اور ٹی آر کمانڈ کی بازگشت نے پروسیسنگ جاری رکھی تھی۔ پیدا کرتا ہے: یہاں دستاویز کے ساتھ <<-ایک واحد جگہ کردار (I. E. 0X20) اس لائن کے آغاز پر ہے یہ لائن ایک واحد ٹیب کردار I. E 0X09 کے ساتھ شروع ہوتی ہے جیسا کہ اگلی لائن کرتا ہے مطلوبہ اختتام اس لائن سے پہلے تھا اور ان پر tr + + + + + + + + + + + + + + + + + + کے ذریعے کارروائی نہیں کی گئی تھی۔ 0X20) اس لائن کے آغاز پر ہے یہ لائن ایک سنگل ٹیب چارٹر I. E 0X09 کے ساتھ شروع ہوتی ہے جیسا کہ اگلی لائن اینڈ _ ٹیکسٹ ایکو کا مقصد اختتام اس لائن سے پہلے تھا، ایکو لیکن اس وجہ سے کہ لائن کو ٹیب کے ساتھ ڈیلیمنگ آئیڈینٹی فائر کے ساتھ شروع کیا گیا تھا، یہ تسلیم نہیں کیا گیا تھا اور TR کمانڈ جاری عمل تھا۔ ایک اور استعمال فائل میں آؤٹ پٹ کرنا ہے: $cate <<EOF> ~/testFile001> 3 خالی جگہیں اس متن سے پہلے ہیں۔ > ایک واحد ٹیب کردار اس لائن کے آغاز میں ہے۔ > اس متن سے پہلے کچھ بھی نہیں EOF یہاں سٹرنگ A یہاں سٹرنگ (بیش، کے ایس ایچ، یا زیڈ ایس ایچ میں دستیاب) نحو کے لحاظ سے ایک جیسی ہے، جو کسی لفظ سے ان پٹ ری ڈائریکشن پر مشتمل ہے، اور اس کے اثرات پر مشتمل ہے (شیل کے ذریعہ یونٹ کے طور پر سمجھا جانے والا ایک تسلسل، اس تناظر میں عام طور پر ایک سٹرنگ لیٹرل)۔ اس صورت میں لفظ کے لیے معمول کا شیل نحو استعمال کیا جاتا ہے ("یہاں سٹرنگ نحو")، جس میں واحد نحو ری ڈائریکشن ہے: یہاں سٹرنگ ایک عام سٹرنگ ہے جو ان پٹ ری ڈائریکشن کے لیے استعمال ہوتی ہے، نہ کہ کسی خاص قسم کی سٹرنگ کے لیے۔ ایک لفظ کا حوالہ دینے کی ضرورت نہیں ہے: $LANG = C TR a-z A-Z <<ایک خالی جگہوں والی سٹرنگ کی صورت میں، اس کا حوالہ دینا ضروری ہے: $LANG = C TR a-z A-Z <<'ایک دو تین' ایک دو تین یہ اس طرح بھی لکھا جا سکتا ہے: $fOO = 'ایک دو تین' $LANG = C TR a-z A-Z <<<"$fOO" ایک دو تین ملٹی لائن سٹرنگ قابل قبول ہیں، جس سے نتیجہ نکلتا ہے: $LANG = C TR a-z A-Z <<<'ایک> دو تین' ایک دو تین نوٹ جو نئے سرے اور پیچھے ہیں۔ یہاں کے دستاویزات کے برعکس، یہاں سٹرنگز حد بندی کا استعمال نہیں کرتے ہیں۔ یہاں سٹرنگز خاص طور پر ان کمانڈوں کے لیے مفید ہیں جو اکثر مختصر ان پٹ لیتے ہیں، جیسے کیلکولیٹر bc: $bc <<2 <101024 نوٹ کریں کہ یہاں سٹرنگ کے رویے کو پائپنگ اور ایکو کمانڈ کے ذریعے (آرڈر کو الٹ کر) بھی پورا کیا جا سکتا ہے، جیسا کہ: $echo 'ایک دو تین'۔ LANG = C tr a-z A-Z ایک دو تین تاہم یہاں سٹرنگز خاص طور پر مفید ہیں جب آخری کمانڈ کو موجودہ عمل میں چلانے کی ضرورت ہوتی ہے، جیسا کہ ریڈ بلٹن کے معاملے میں ہوتا ہے: $echo 'ایک دو تین'۔ پڑھو-r a b c $echo "$a $b $c" سے کچھ حاصل نہیں ہوتا، جبکہ $پڑھو-r a b c <<'ایک دو تین' مائیکروسافٹ NMAKE مائیکروسافٹ NMAKE میں، یہاں دستاویزات کو ان لائن فائلیں کہا جاتا ہے۔ ان لائن فائلوں کو <<یا <<پاتھ نام کے طور پر حوالہ دیا جاتا ہے: پہلا اشارہ ایک عارضی فائل بناتا ہے، دوسرا اشارہ مخصوص پاتھ نام کے ساتھ فائل بناتا ہے (یا اوور رائٹ کرتا ہے)۔ ایک ان لائن فائل کو خود ہی ایک لائن پر <<کے ساتھ ختم کیا جاتا ہے، اختیاری طور پر اس کے بعد (کیس غیر حساس) مطلوبہ لفظ KEEP یا NOKEEP ہوتا ہے تاکہ یہ ظاہر کیا جا سکے کہ بنائی گئی فائل کو رکھا جانا چاہیے یا نہیں۔ ٹارگٹ 0: انحصار 0 کمانڈ 0 <<عارضی ان لائن فائل۔ <<ٹارگٹ 1: انحصار 1 کمانڈ 1 <<عارضی، لیکن محفوظ ان لائن فائل۔ <<KEEP ٹارگٹ 2: انحصار 2 کمانڈ 2 <<فائل نام 2 نام دیا گیا، لیکن ان لائن فائل کو خارج کر دیا گیا۔ <<NOKEEP ٹارگٹ 3: انحصار 3 کمانڈ 3 <<فائل نام 3 نام ان لائن فائل۔ <<KEEP R R میں فائل لیٹرلز نہیں ہیں، لیکن سٹرنگ لیٹرلز کو سٹرنگ ٹو فائل فنکشن کے ساتھ جوڑ کر مساوی فعالیت فراہم کرتا ہے۔ R تاروں میں نئی لکیروں سمیت من مانی سفید جگہ کی اجازت دیتا ہے۔ اس کے بعد ایک سٹرنگ کو ٹیکسٹ کنکشن () فنکشن کا استعمال کرتے ہوئے فائل ڈسکرپٹر میں تبدیل کیا جا سکتا ہے۔ مثال کے طور پر، مندرجہ ذیل ماخذ کوڈ میں سرایت شدہ ڈیٹا ٹیبل کو ڈیٹا فریم متغیر میں بدل دیتا ہے: اسٹر <-"ریاستی آبادی کی آمدنی ناخواندگی Life.Exp قتل HS.Grad فراسٹ الاباما 3615 3624 2.1 69.05 15.1 41.3 20 الاسکا 365 6315 1.1 69.31 11.3 66.7 152 ایریزونا 2212 4530 1.1 70.55 7.8 58.1 15 آرکنساس 2110 3378 1.1 <ID4 70.66 10.1 39.9 65" x <-read.table (ٹیکسٹ کنکشن (اسٹر)، ہیڈر = TRUE، row.names=1) ڈیٹا سیگمنٹ پرل اور روبی میں فائل لیٹرل کی ایک شکل ہے، جسے ڈیٹا سیگمنٹ کی ایک شکل سمجھا جا سکتا ہے۔ ان زبانوں میں، بشمول لائن (پرل) یا (روبی، پرانا پرل) کوڈ کے حصے کے اختتام اور ڈیٹا کے حصے کے آغاز کی نشاندہی کرتا ہے۔ صرف اس لائن سے پہلے کے مندرجات پر عمل کیا جاتا ہے، اور اس لائن کے بعد سورس فائل کے مندرجات فائل آبجیکٹ کے طور پر دستیاب ہوتے ہیں: پیکج:: ڈیٹا پرل میں (مثال کے طور پر، مین:: ڈیٹا) اور ڈیٹا روبی میں۔ ایک ان لائن فائل کے طور پر، یہ لفظی طور پر یہاں کے دستاویزات سے ملتے جلتے ہیں، حالانکہ فی اسکرپٹ صرف ایک ہی ہو سکتا ہے۔ تاہم، ان زبانوں میں "یہاں دستاویز" کی اصطلاح اس کے بجائے ملٹی لائن سٹرنگ لیٹرلز کی طرف اشارہ کرتی ہے، جیسا کہ ذیل میں بحث کی گئی ہے۔ ڈیٹا یو آر آئی اسکیم جیسا کہ ڈیٹا یو آر آئی اسکیم میں مزید وضاحت کی گئی ہے، تمام بڑے ویب براؤزر یو آر آئی کو سمجھتے ہیں جو ڈیٹا سے شروع ہوتے ہیں: جیسا کہ یہاں دستاویز ہے۔ "ہیئر ڈاکیومنٹ" یا "ہیئر سٹرنگ" کی اصطلاح مختلف پروگرامنگ زبانوں میں ملٹی لائن سٹرنگ لیٹرلز کے لیے بھی استعمال ہوتی ہے، خاص طور پر پرل (یونکس شیل سے متاثر نحو)، اور پرل سے متاثر زبانیں، خاص طور پر پی ایچ پی اور روبی۔ ان پٹ ری ڈائریکشن کے لیے استعمال نہ ہونے کے باوجود شیل سٹائل <<نحو کو اکثر برقرار رکھا جاتا ہے۔ پرل سے متاثر پرل ان پرل میں یہاں ڈاکس کو مدعو کرنے کے کئی مختلف طریقے ہیں۔ ٹیگ کے ارد گرد کی حد بندی کا یہاں کے دستاویز کے اندر وہی اثر ہوتا ہے جو وہ باقاعدہ سٹرنگ لفظی میں ہوتا ہے: مثال کے طور پر، ٹیگ کے ارد گرد ڈبل کوٹس کا استعمال متغیرات کو انٹرپولیٹ کرنے کی اجازت دیتا ہے، لیکن سنگل کوٹس کا استعمال نہیں کرتا ہے، اور ٹیگ کا استعمال دونوں میں سے کسی کے بغیر ڈبل کوٹس کی طرح برتاؤ کرتا ہے۔ ٹیگ کے ارد گرد حد بندی کے طور پر بیکٹیکس کا استعمال ہیرڈوک کے مندرجات کو شیل اسکرپٹ کے طور پر چلاتا ہے۔ اس بات کو یقینی بنانا ضروری ہے کہ اختتامی ٹیگ لائن کے آغاز میں ہو یا ٹیگ مترجم کے ذریعے پہچانا نہ جائے۔ نوٹ کریں کہ یہاں کا دستاویز ٹیگ سے شروع نہیں ہوتا بلکہ اگلی سطر سے شروع ہوتا ہے۔ لہذا ٹیگ پر مشتمل بیان ٹیگ کے بعد جاری رہتا ہے۔ یہاں دوہرے حوالوں کے ساتھ ایک مثال ہے: میرا $بھیجنے والا = "بفی دی ویمپائر سلیئر" ؛ میرا $وصول کنندہ = "اسپائیک" ؛ پرنٹ <<"اینڈ" ؛ پیارے $وصول کنندہ، میری خواہش ہے کہ آپ سنیڈیل چھوڑ دیں اور کبھی واپس نہ آئیں۔ ناٹ کویٹ لو، $سینڈر اینڈ آؤٹ پٹ: یہاں واحد حوالوں کے ساتھ ایک مثال ہے: پرنٹ <<'اینڈ' ؛ پیارے $وصول کنندہ، میری خواہش ہے کہ آپ سنیڈیل چھوڑ دیں اور کبھی واپس نہ آئیں۔ کافی محبت نہیں، $بھیجنے والا اختتامی آؤٹ پٹ: اور بیکٹیکس کے ساتھ ایک مثال (پورٹیبل نہیں ہو سکتا): میرا $شیل _ اسکرپٹ _ اسٹڈاؤٹ = <<'اینڈ' ؛ ایکو فو ایکو بار اینڈ ایک ہی لائن پر متعدد ہیرڈوکس شروع کرنا ممکن ہے: کہیں (<<شروع کریں۔ "یہ درمیانی \n ہے۔" <<اختتام) ؛ یہ شروعات ہے: شروع کریں اور اب یہ ختم ہو گیا ہے! اختتام #یہ اس کے مساوی ہے: کہو ("یہ آغاز ہے: \nth یہ درمیانی ہے\n اور اب یہ ختم ہو گیا ہے! \n") ؛ ٹیگ میں خود سفید جگہ ہو سکتی ہے، جو ہیرڈوکس کو انڈینٹیشن کو توڑے بغیر استعمال کرنے کی اجازت دے سکتی ہے۔ کہتے ہیں کہ <<'اختتام' ؛ ہیلو ورلڈ اختتام اگرچہ پرل ورژن 5.26 کے بعد سے، ہیرڈوکس میں اشارے شامل ہو سکتے ہیں: #prints "ہیلو وہاں \n" جس میں کوئی معروف سفید جگہ نہیں ہے۔ اگر (1) {پرنٹ <<~ EOF ؛ ہیلو وہاں EOF} ان سٹرنگز کے علاوہ، پرل میں فائل کے لیٹرلز بھی شامل ہیں، یعنی فائل کے مندرجات جو خود ہی ایک لائن پر (سابقہ) ہوتے ہیں۔ یہ فائل آبجیکٹ پیکج:: ڈیٹا جیسے کہ مین:: ڈیٹا کے طور پر قابل رسائی ہے، اور اسے ڈیٹا سیگمنٹ کی ایک شکل کے طور پر دیکھا جا سکتا ہے۔ پی ایچ پی میں، یہاں دستاویزات کو ہیرڈوکس کہا جاتا ہے۔ پی ایچ پی میں ہیرڈوکس سٹرنگ لیٹرل نہیں ہوتے ہیں۔ ہیرڈوک متن ڈبل حوالہ شدہ سٹرنگ کی طرح برتاؤ کرتا ہے، لیکن ڈبل حوالہ جات کے بغیر۔ مثال کے طور پر، معنی '$' کو متغیر آغاز کے طور پر تجزیہ کیا جائے گا، اور '${' یا '{$' کو پیچیدہ متغیر آغاز کے طور پر تجزیہ کیا جائے گا۔ <? پی ایچ پی $نام = "جو اسمتھ" ؛ $پیشہ = "پروگرامر" ؛ گونج <<<ای او ایف یہ ایک ہیرڈوک سیکشن ہے۔ مزید معلومات کے لیے اپنے مقامی $پیشے کے $نام سے بات کریں۔ شکریہ! EOF ؛ $toprint = <<<EOF ارے $نام! آپ اصل میں ہیرڈوک سیکشن کو متغیر کے لیے تفویض کر سکتے ہیں! ای او ایف ؛ ایکو $ٹو پرنٹ ؛؟> آؤٹ پٹ 7.3 سے پہلے کے پی ایچ پی ورژن میں، اختتامی شناخت کنندہ پر مشتمل لائن میں اختیاری اختتامی سیمی کولن کے علاوہ کوئی دوسرے حروف نہیں ہونے چاہئیں۔ بصورت دیگر، اسے اختتامی شناخت کنندہ نہیں سمجھا جائے گا، اور پی ایچ پی ایک کی تلاش جاری رکھے گا۔ اگر ایک مناسب اختتامی شناخت کنندہ نہیں ملتا ہے، تو اسکرپٹ کی آخری سطر پر تجزیہ کی غلطی کا نتیجہ نکلے گا۔ تاہم، ورژن 7.3 سے، اب یہ ضروری نہیں ہے کہ اختتامی شناخت کنندہ کے بعد سیمی کولن یا نیو لائن ہو۔ مزید برآں اختتامی شناخت کنندہ کو انڈینٹ کیا جا سکتا ہے، ایسی صورت میں ڈاک سٹرنگ کی تمام لائنوں سے انڈینٹیشن کو ہٹا دیا جائے گا۔ پی ایچ پی 5.3 میں اور بعد میں، پرل کی طرح، یہ ممکن ہے کہ ٹیگ کو واحد حوالوں کے ساتھ گھیر کر متغیرات کو انٹرپولیٹ نہ کیا جائے۔ اسے نوڈوک کہا جاتا ہے: $x = <<<'END' پیارے $وصول کنندہ، میں چاہتا ہوں کہ آپ سنیڈیل چھوڑ دیں اور کبھی واپس نہ آئیں۔ ناٹ کویٹ لو، $سینڈر اینڈ ؛ پی ایچ پی 5.3 + میں ٹیگ کو ڈبل کوٹس کے ساتھ گھیرنا بھی ممکن ہے، جس کا اثر پرل کی طرح ٹیگ کو کسی بھی چیز کے ساتھ گھیر کر نہ رکھنے کے برابر ہوتا ہے۔ مندرجہ ذیل روبی کوڈ یہاں دستاویز کا استعمال کرتے ہوئے کریانہ کی فہرست دکھاتا ہے۔ <GROCERY _ LIST گروسری کی فہرست---- 1 ڈالتا ہے۔ سلاد مکس کریں۔ 2. اسٹرابیری۔ * 3. اناج۔ 4. دودھ۔ * * نامیاتی GROCERY _ LIST نتیجہ: $روبی grocery-list.rb گروسری کی فہرست-----------1۔ سلاد مکس کریں۔ 2. اسٹرابیری۔ * 3. اناج۔ 4. دودھ۔ * * نامیاتی یہاں موجود دستاویز میں <<ان پٹ ری ڈائریکشن کی نشاندہی نہیں کرتا ہے، لیکن روبی بھی ان پٹ ری ڈائریکشن کے لیے <<کا استعمال کرتی ہے، اس لیے یہاں موجود دستاویز سے فائل پر ری ڈائریکٹ کرنے میں مختلف معنوں میں <<دو بار استعمال کرنا شامل ہے: فائل:: کھولیں ("کریانہ فہرست"، "ڈبلیو") |f | f <<<GROCERY _ LIST کریانہ فہرست---- 1 کریں۔ سلاد مکس کریں۔ 2. اسٹرابیری۔ * 3. اناج۔ 4. دودھ۔ * * نامیاتی GROCERY _ LIST اختتام یونیکس شیلز کی طرح، روبی بھی حد بندی کرنے والے شناخت کنندہ کو لائن کے پہلے کالم سے شروع نہ کرنے کی اجازت دیتی ہے، اگر یہاں دستاویز کا آغاز قدرے مختلف اسٹارٹر <<-کے ساتھ نشان زد ہے۔ اس کے علاوہ، روبی یہاں دستاویزات کو ڈبل حوالہ شدہ سٹرنگ کے طور پر پیش کرتی ہے، اور اس طرح، کوڈ کو انٹرپولیٹ کرنے کے لیے #{} کنسٹرکٹ کا استعمال کرنا ممکن ہے۔ مندرجہ ذیل مثال ان دونوں خصوصیات کی وضاحت کرتی ہے: اب = Time.now ڈالتا ہے <<-EOF یہ #{now.hour} بجے ہے جان، آپ کے بچے کہاں ہیں؟ ای او ایف روبی یہاں موجود دستاویز پر انڈینٹیشن کو چھوڑنے کے لیے "<<~" نحو فراہم کر کے اس پر توسیع کرتا ہے: <<~ ای او ایف رکھتا ہے یہ لائن دو خالی جگہوں پر انڈینٹیڈ ہے۔ یہ لکیر چار خالی جگہوں پر جڑی ہوئی ہے۔ یہ لکیر چھ خالی جگہوں پر جڑی ہوئی ہے۔ ای او ایف دو خالی جگہوں کا مشترکہ انڈینٹیشن تمام لائنوں سے خارج کر دیا گیا ہے: $روبی indented-heredoc.rb یہ لائن دو خالی جگہوں پر انڈینٹیڈ ہے۔ یہ لکیر چار خالی جگہوں پر جڑی ہوئی ہے۔ یہ لکیر چھ خالی جگہوں پر جڑی ہوئی ہے۔ پرل کی طرح، روبی یہاں متعدد دستاویزات کو ایک لائن میں شروع کرنے کی اجازت دیتی ہے: <<BEGIN + "<-----------> \n" + <<END یہ شروعات ہے: شروع کریں اور اب یہ ختم ہو گیا ہے! اختتام #یہ اس اظہار کے برابر ہے: "یہ آغاز ہے: \n <---- درمیانی---> \n اور اب یہ ختم ہو گیا ہے!" پرل کی طرح، روبی میں بھی فائل کے لیٹرلز ہوتے ہیں، یعنی فائل کے مندرجات جو خود ہی ایک لائن پر ہوتے ہیں۔ یہ فائل آبجیکٹ ڈیٹا کے طور پر قابل رسائی ہے اور اسے ڈیٹا سیگمنٹ کی شکل کے طور پر دیکھا جا سکتا ہے۔ ازگر ازگر "وربیٹیم" سٹرنگ کے طور پر ملٹی لائن سٹرنگ کی حمایت کرتا ہے۔ انہیں 3 سنگل (') یا ڈبل (") کوٹیشن مارکس میں منسلک کیا جا سکتا ہے، مؤخر الذکر کو نیچے دی گئی مثالوں میں دکھایا گیا ہے۔ پرنٹ کریں ("" گاہک: کیا یہ زیادہ چیز کی دکان نہیں ہے؟ دکاندار: ضلع میں سب سے بہترین، جناب۔ ") ازگر 3.6 کے بعد سے، وربیٹیم ایف-سٹرنگ متغیر اور اظہار انٹرپولیشن کی حمایت کرتے ہیں۔ Shop _ type = "CHEEESE" تعریف = "بہترین" پرنٹ (f "" گاہک: یہ {shop_type.lower ()} کی زیادہ دکان نہیں ہے؟ دکاندار: ضلع میں، جناب۔ "") C + + چونکہ C + + 11، C + + کسٹم ڈیلیمیٹر کے ساتھ سٹرنگ لیٹرلز کو سپورٹ کرتا ہے (اس مثال میں "مائی _ ڈیلیمیٹر"): #include <ostᱨᱤᱢ> کانسٹ چار * اسٹر = R "مائی _ ڈیلیمیٹر (سٹرنگ کا آغاز)۔ نئی لائن سلیش "پیرنز" (سٹرنگ کا اختتام) "مائی ڈیلیمیٹر" ؛ ایس ٹی ڈی:: cout <<اسٹر <<ایس ٹی ڈی:: اینڈل ؛ سٹرنگ کا آغاز پرنٹ کرے گا۔ نئی لائن سلیش "'پیرنز') (سٹرنگ D کا اختتام ورژن 2 کے بعد سے، D میں 'q' پریفیکس کردار کا استعمال کرتے ہوئے یہاں دستاویز طرز کے سٹرنگز کے لیے سپورٹ ہے۔ یہ تار q "IDENT سے شروع ہوتے ہیں جس کے بعد فوری طور پر ایک نئی لائن (صوابدیدی شناخت کنندہ IDENT کے لیے) آتی ہے، اور لائن کے آغاز میں IDENT کے ساتھ ختم ہوتے ہیں۔ انٹی مین () {سٹرنگ لسٹ = q "IDENT 1۔ آئٹم ایک 2. آئٹم دو 3. آئٹم تھری آئی ڈی ای این ٹی "؛ رائٹف (لسٹ) ؛} ڈی بھی کچھ حوالہ جات کی حد بندی کی حمایت کرتا ہے، اسی طرح کے نحو کے ساتھ، اس طرح کے تار q" [اور اس کے ساتھ ختم ہونے والے] "سے شروع ہوتے ہیں یا اسی طرح دوسرے حد بندی حروف (() <> {} یا [] میں سے کسی کے لیے۔ او ایس/جے سی ایل آئی بی ایم کی جاب کنٹرول لینگویج (جے سی ایل) پر جو اس کے پہلے ایم وی ایس اور موجودہ زیڈ/او ایس آپریٹنگ سسٹمز پر استعمال ہوتی ہے، جو ڈیٹا جاب اسٹریم سے منسلک ہوتا ہے، اس کی شناخت ڈی ڈی سٹیٹمنٹ پر * کے ذریعے کی جا سکتی ہے، جیسے یا پہلی صورت میں، ٹیکسٹ کی لائنیں اس کی پیروی کرتی ہیں اور اسے ڈی ڈی نام ایس وائی ایس آئی این کے ساتھ ایک فرضی فائل میں ملا دیا جاتا ہے۔ کمانڈ کے بعد آنے والے تمام ریکارڈز کو اس وقت تک جوڑا جاتا ہے جب تک کہ یا تو کوئی اور او ایس/جے سی ایل کمانڈ نہ آئے (جس سے شروع ہونے والی کوئی بھی لائن)، ڈیفالٹ ای او ایف سیکوینس () نہ مل جائے، یا ڈیٹا کا فزیکل اینڈ نہ ہو جائے۔ دوسری صورت میں، شرائط ایک جیسی ہیں، سوائے اس کے کہ ڈی ایل ایم = اوپرینڈ کو ڈیٹا کے ٹیکسٹ سٹرنگ سگنلنگ اینڈ کی وضاحت کے لیے استعمال کیا جاتا ہے، جسے اس صورت میں استعمال کیا جا سکتا ہے جب ڈیٹا اسٹریم میں جے سی ایل (دوبارہ، کوئی بھی لائن جس سے شروع ہوتی ہے)، یا ترتیب (جیسے سی یا سی + + سورس کوڈ میں تبصرے) ہو۔ مندرجہ ذیل اسمبلی زبان کے پروگرام کو مرتب اور انجام دیتا ہے، جو اسمبلر کو ان لائن ڈیٹا کے طور پر فراہم کیا جاتا ہے۔ //AHAR JoB ('ALEX HARRIS')// EXEC ASMLG// SYSIN DD * APROG START XR 15,15 BOR 14 END/*/* نوکری کا اختتام بیان ڈیٹا کے سلسلے کی نشاندہی کرنے کے فعال مساوی ہے، جس کے ذریعے ختم کیا جاتا ہے۔ ریکٹ ریکٹ کے یہاں کے سٹرنگ #<<سے شروع ہوتے ہیں جس کے بعد ایسے حروف ہوتے ہیں جو سٹرنگ کے لیے ٹرمینیٹر کی وضاحت کرتے ہیں۔ سٹرنگ کے مواد میں #<<لائن اور ایک لائن کے درمیان تمام حروف شامل ہوتے ہیں جن کا واحد مواد مخصوص ٹرمینیٹر ہوتا ہے۔ مزید واضح طور پر، سٹرنگ کا مواد #<<کے بعد ایک نئی لائن کے بعد شروع ہوتا ہے، اور یہ ایک نئی لائن سے پہلے ختم ہوتا ہے جس کے بعد ٹرمینیٹر آتا ہے۔ #lang ریکیٹ (ڈسپلے ایل این #<<HERESTRING یہ ریکیٹ میں یہاں ایک سادہ سٹرنگ ہے۔ * ایک * دو * تین ہیرسٹرنگ) آؤٹ پٹ: ابتدائی اور اختتامی لائنوں کے درمیان کوئی فرار کے سلسلے کو پہچانا نہیں جاتا ہے۔ تمام حروف لفظی طور پر سٹرنگ (اور ٹرمینیٹر) میں شامل ہوتے ہیں۔ #lang ریکیٹ (ڈسپلن #<<A یہاں ریکٹ میں تار یہ تار متعدد لائنوں کے لیے پھیلا ہوا ہے اور اس میں کوئی بھی یونیکوڈ علامت ہو سکتی ہے۔ تو چیزیں جیسے λ، ′، α، β، سب ٹھیک ہیں۔ اگلی لائن میں ٹرمینیٹر آتا ہے۔ اس میں کوئی بھی یونیکوڈ علامت بھی ہو سکتی ہے، یہاں تک کہ خالی جگہیں اور مسکراہٹیں بھی! راکیٹ میں ایک یہاں سٹرنگ) آؤٹ پٹ: یہاں سٹرنگز کو عام طور پر ایسے سیاق و سباق میں استعمال کیا جا سکتا ہے جہاں عام سٹرنگز: #lang ریکیٹ (پرنٹ ایف #<<اینڈ ڈیئر ~ a، بصیرت انگیز گفتگو کے لیے شکریہ ~ a۔ ~ a END "آئزک" "کل" "کارل") آؤٹ پٹ: ایک دلچسپ متبادل یہ ہے کہ @-ایکسپریشن لکھنے کے لیے زبان کی توسیع ایٹ-ایکسپریس کا استعمال کیا جائے۔ وہ اس طرح نظر آتے ہیں: #lang ایٹ ایکس پی ریکیٹ (ڈسپلے ایل این @string-اپینڈ {یہ ایک لمبی تار ہے، جب متن کے لمبے حصے کی ضرورت ہوتی ہے تو یہ بہت آسان ہوتا ہے۔ "کوٹس" سے بچنے یا فرار ہونے کے بارے میں کوئی فکر نہیں۔ λ، γ، θ ہونا بھی ٹھیک ہے۔ ایمبیڈ کوڈ: @(نمبر-> سٹرنگ (+ 3 4))}) آؤٹ پٹ: ایک @-اظہار مخصوص نہیں ہے اور نہ ہی تاروں تک محدود ہے، یہ ایک نحو شکل ہے جسے باقی زبان کے ساتھ ترتیب دیا جا سکتا ہے۔ ونڈوز پاور شیل پاور شیل میں، یہاں دستاویزات کو ہیئر-سٹرنگ کہا جاتا ہے۔ ہیئر سٹرنگ ایک سٹرنگ ہے جو ایک کھلے ڈیلیمیٹر (@"یا @") سے شروع ہوتی ہے اور خود ہی ایک لائن پر قریبی ڈیلیمیٹر ("@یا" @) کے ساتھ ختم ہوتی ہے، جو سٹرنگ کو ختم کرتی ہے۔ کھلے اور قریبی حد بندی کے درمیان تمام حروف کو سٹرنگ لیٹرل سمجھا جاتا ہے۔ ڈبل کوٹس کے ساتھ ہیئر سٹرنگ کا استعمال متغیرات کی تشریح کرنے کی اجازت دیتا ہے، واحد کوٹس کا استعمال نہیں کرتا ہے۔ متغیر انٹرپولیشن سادہ متغیرات کے ساتھ ہوتا ہے (مثال کے طور پر۔ $x لیکن $x. y یا $x [0] نہیں۔ آپ بیانات کے ایک سیٹ کو $() میں ڈال کر انجام دے سکتے ہیں۔ $($x. y) یا $(حاصل کریں-عمل۔ باہر نکلیں))۔ مندرجہ ذیل پاور شیل کوڈ میں، متن کو ہیئر سٹرنگ کا استعمال کرتے ہوئے فنکشن میں منتقل کیا جاتا ہے۔ فنکشن کنورٹ ٹو اپر کیس کی تعریف اس طرح کی گئی ہے: پی ایس> فنکشن کنورٹ ٹو اپر کیس ($سٹرنگ) {$string.ToUpper ()} پی ایس> کنورٹ ٹو اپر کیس @'> ایک دو تین>> آئنز زویئی ڈری>>' @ایک دو تین آئنز زیڈ ڈبلیو ای آئی ڈری یہاں ایک مثال ہے جو دوہرے حوالوں کے ساتھ یہاں سٹرنگ کا استعمال کرتے ہوئے متغیر انٹرپولیشن اور بیان پر عمل درآمد کو ظاہر کرتی ہے: پی ایس> $ڈاک، $شہید = 'ڈاکٹر۔ ایمیٹ براؤن '،' مارٹی میک فلائی 'پی ایس> $ٹائم = [ڈیٹ ٹائم] جمعہ، 25 اکتوبر 1985 8:00:00 اے ایم' پی ایس> $ڈف = نیو ٹائم اسپین-منٹ 25 پی ایس> @"> $ڈاک: کیا وہ میری گھڑیاں ہیں جو میں سن رہا ہوں؟ >> $شہید: ہاں! آہ، یہ $($time.Hour) بجے ہیں! >> $doc: کامل! میرا تجربہ کام کر گیا! وہ بالکل $($diff.Minutes) منٹ سست ہیں۔ >> $شہید: ایک منٹ انتظار کریں۔ ایک منٹ انتظار کریں۔ ڈاکٹر۔ کیا آپ مجھے بتا رہے ہیں کہ یہ $(($وقت + $فرق) ہے۔ ٹو شارٹ ٹائم سٹرنگ ())؟ >> $doc: بالکل۔ >> $شہید: لعنت! مجھے اسکول جانے میں دیر ہو رہی ہے! @ڈاکٹر ایمیٹ براؤن: کیا یہ میری گھڑیاں ہیں جو میں سنتا ہوں؟ مارٹی میک فلائی: ہاں! آہ، آٹھ بجے ہیں! ڈاکٹر ایمیٹ براؤن: کامل! میرا تجربہ کام کر گیا! وہ سب بالکل 25 منٹ سست ہیں۔ مارٹی میک فلائی: ایک منٹ انتظار کریں۔ ایک منٹ انتظار کریں۔ ڈاکٹر۔ کیا آپ مجھے بتا رہے ہیں کہ یہ 08:25 ہے؟ ڈاکٹر ایمیٹ براؤن: بالکل۔ مارٹی میک فلائی: لعنت! مجھے اسکول جانے میں دیر ہو رہی ہے! اس کے بجائے واحد اقتباسات کے ساتھ ہیئر سٹرنگ کا استعمال کرتے ہوئے، آؤٹ پٹ اس طرح نظر آئے گا: پی ایس> @'>> $doc: کیا وہ میری گھڑیاں ہیں جو میں سن رہا ہوں؟ >> $شہید: ہاں! آہ، یہ $($time.Hour) بجے ہیں! >> $doc: کامل! میرا تجربہ کام کر گیا! وہ بالکل $($diff.Minutes) منٹ سست ہیں۔ >> $شہید: ایک منٹ انتظار کریں۔ ایک منٹ انتظار کریں۔ ڈاکٹر۔ کیا آپ مجھے بتا رہے ہیں کہ یہ $(($وقت + $فرق) ہے۔ ٹو شارٹ ٹائم سٹرنگ ())؟ >> $doc: بالکل۔ >> $شہید: لعنت! مجھے اسکول جانے میں دیر ہو رہی ہے! >> '@$doc: کیا یہ میری گھڑیاں ہیں جو میں سنتا ہوں؟ $شہید: ہاں! آہ، یہ $($time.Hour) بجے ہیں! $doc: کامل! میرا تجربہ کام کر گیا! وہ بالکل $($diff.Minutes) منٹ سست ہیں۔ $شہید: ایک منٹ انتظار کریں۔ ایک منٹ انتظار کریں۔ ڈاکٹر۔ کیا آپ مجھے بتا رہے ہیں کہ یہ $(($وقت + $فرق) ہے۔ ٹو شارٹ ٹائم سٹرنگ ())؟ $doc: بالکل۔ $شہید: لعنت! مجھے اسکول جانے میں دیر ہو رہی ہے! ڈیجیٹل کمانڈ لینگویج (ڈی سی ایل) ڈی سی ایل اسکرپٹ میں، کوئی بھی ان پٹ لائن جو $علامت سے شروع نہیں ہوتی ہے اسے واضح طور پر سابقہ کمانڈ کے ان پٹ کے طور پر سمجھا جاتا ہے-وہ تمام لائنیں جو $سے شروع نہیں ہوتی ہیں وہ یہاں-دستاویزات ہیں۔ ان پٹ یا تو پروگرام کو منتقل کیا جاتا ہے، یا واضح طور پر منطقی نام SYS $INPUT (ایس ٹی ڈی این کے یونکس تصور کے مترادف) سے حوالہ دیا جا سکتا ہے۔ مثال کے طور پر، واضح طور پر ان پٹ کو SYS $INPUT: $TYPE SYS $INPUT کے طور پر حوالہ دیتے ہوئے یہ متن TYPE کمانڈ کے ذریعے براہ راست اسکرین پر گونج جائے گا۔ $! دیگر کمانڈز۔ پیدا کرتا ہے: یہ متن TYPE کمانڈ کے ذریعے براہ راست اسکرین پر گونج جائے گا۔ مزید برآں، ڈی ای سی کے کمانڈ، جو ابتدائی طور پر پنچڈ کارڈ سپورٹ کے لیے تھی (اس لیے اس کا نام: یہ ڈیٹا ڈیک کے آغاز کی نشاندہی کرتا ہے) کو سابقہ کمانڈ کو ان پٹ فراہم کرنے کے لیے استعمال کیا جا سکتا ہے۔ ان پٹ ڈیک کو یا تو کمانڈ $EOD، یا ڈیک کے لیے/DOLLARS پیرامیٹر کے ذریعے مخصوص کریکٹر پیٹرن کے ذریعے ختم کیا جاتا ہے۔ مالیاتی اقدار کو جمع کرنے والے پروگرام کی مثال: $RUN ADD_SUMS.EXE $DECK $13.53 $3.33 $2.33 $EOD مندرجہ ذیل آؤٹ پٹ پیدا کرے گا (فرض کریں کہ ADD _ SUMS اقدار کو پڑھنے اور انہیں شامل کرنے کے لیے لکھا گیا تھا): $19.19 ایک کمانڈ فائل کو دوسرے سے بنانے کے لیے DECK/DOLLARS استعمال کرنے کی مثال: $COPY SYS $INPUT SYS $SCRACH: TEMP.COM $DECK/DOLLARS = $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ دیگر کمانڈز کی پیروی کی جاتی ہے۔ YAML YAML بنیادی طور پر ڈھانچے کے لیے وائٹ اسپیس انڈینٹیشن پر انحصار کرتا ہے، جو اسے حد بندی کے تصادم کے خلاف مزاحم بناتا ہے اور فولڈڈ سٹرنگ لیٹرلز کے ساتھ ملٹی لائن سٹرنگز کی نمائندگی کرنے کے قابل بناتا ہے:---- کیپشن: "YAML کا استعمال کرتے ہوئے ہیرڈوک طرز کی فعالیت کی مثال" تاریخ: "2007-06-01" مثال:> ایچ ٹی ایم ایل بغیر کسی ترمیم کے پیغام کے YAML میں جاتا ہے: | <بلاک کوٹ سٹائل = "فونٹ: اٹالک 12 پی ٹی ٹائمز"> <p> "تین ہمیشہ دو سے بڑا ہوتا ہے، یہاں تک کہ دو کی بڑی اقدار کے لیے بھی" </p> <p>-- مصنف نامعلوم </p> </بلاک کوٹ> سی ڈی اے ٹی اے پائپ لائن (یونکس) حوالہ جات یہاں دستاویزات 19.1 ہیں۔ یہاں سٹرنگس بیرونی لنکس یہاں دستاویز۔ یہاں 15 سے زیادہ زبانوں میں دستاویزات کی مثالوں کے ساتھ روزیٹا کوڈ ٹاسک سے لنک کریں۔ پروگرامنگ سٹرنگ (کمپیوٹر سائنس) کی تعمیر کرتا ہے مثال کے طور پر سی + + کوڈ والے مضامین مثال کے طور پر ڈی کوڈ والے مضامین مثال کے طور پر پرل کوڈ والے مضامین مثال کے طور پر پی ایچ پی کوڈ والے مضامین مثال کے طور پر ازگر (پروگرامنگ زبان) کوڈ والے مضامین مثال کے طور پر روبی کوڈ والے مضامین