perlpodspec - ক্লাউডে অনলাইন

এটি হল perlpodspec কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।

কার্যক্রম:

NAME এর


perlpodspec - সাধারণ পুরানো ডকুমেন্টেশন: বিন্যাস স্পেসিফিকেশন এবং নোট

বর্ণনাঃ


এই নথিটি পড মার্কআপ ভাষার বিস্তারিত নোট। অধিকাংশ মানুষ শুধুমাত্র করতে হবে
পডে কীভাবে লিখতে হয় তা জানতে perlpod পড়ুন, তবে এই নথিটি কিছু আনুষঙ্গিক উত্তর দিতে পারে
পড পার্সিং এবং রেন্ডারিং নিয়ে প্রশ্ন।

এই নথিতে, "অবশ্যই" / "অবশ্যই নয়", "উচিত" / "উচিত নয়", এবং "হতে পারে" তাদের আছে
প্রচলিত (cf. RFC 2119) অর্থ: "X অবশ্যই Y করতে হবে" এর মানে হল যে যদি X Y না করে, তাহলে
এই স্পেসিফিকেশনের বিরুদ্ধে, এবং সত্যিই ঠিক করা উচিত। "এক্সের উচিত Y করা" এর মানে হল এটি
বাঞ্ছনীয়, কিন্তু X, Y করতে ব্যর্থ হতে পারে, যদি একটি ভাল কারণ থাকে। "X may do Y" নিছক a
মনে রাখবেন যে X ইচ্ছামত Y করতে পারে (যদিও এটি পাঠকের উপর নির্ভর করে যে কোন অর্থ সনাক্ত করা
"এবং আমি মনে করি এটা হবে সুন্দর যদি X Y" বনাম " করে তবে তা সত্যিই হবে না মাথা ঘামান আমি যদি এক্স করে
Y")।

উল্লেখযোগ্যভাবে, যখন আমি বলি "পার্সারের উচিত Y করা উচিত", পার্সার Y করতে ব্যর্থ হতে পারে, যদি কলিং
অ্যাপ্লিকেশন স্পষ্টভাবে অনুরোধ করে যে পার্সার না Y do. আমি প্রায়ই এটিকে "the
পার্সারের উচিত, ডিফল্টরূপে, Y করা।" এটি করে না প্রয়োজন পার্সার একটি বিকল্প প্রদান করে
Y বৈশিষ্ট্যটি বন্ধ করার জন্য (যেমন শব্দার্থে অনুচ্ছেদে ট্যাব প্রসারিত করা),
যদিও এটি এমন একটি বিকল্পকে বোঝায় may প্রদান করা.

শুঁটি সংজ্ঞা


পড ফাইলগুলিতে এম্বেড করা হয়, সাধারণত পার্ল সোর্স ফাইল, যদিও আপনি একটি ফাইল লিখতে পারেন
যে পড ছাড়া কিছুই না.

A লাইন একটি ফাইলে শূন্য বা তার বেশি অ-নতুন লাইন অক্ষর থাকে, যেটি হয় a দ্বারা সমাপ্ত হয়
newline বা ফাইলের শেষ।

A নতুন লাইন ক্রম সাধারণত একটি প্ল্যাটফর্ম-নির্ভর ধারণা, কিন্তু পড পার্সারদের উচিত
CR (ASCII 13), LF (ASCII 10), অথবা একটি CRLF (ASCII 13 অনুসরণ করা) এর যে কোনো একটিকে বোঝাতে হবে
অবিলম্বে ASCII 10 দ্বারা), অন্য কোনো সিস্টেম-নির্দিষ্ট অর্থ ছাড়াও। প্রথম
ফাইলে CR/CRLF/LF ক্রম নতুন লাইন শনাক্ত করার ভিত্তি হিসাবে ব্যবহার করা যেতে পারে
বাকি ফাইল পার্স করার জন্য ক্রম।

A ফাঁকা লাইন সম্পূর্ণরূপে শূন্য বা তার বেশি স্পেস (ASCII 32) বা ট্যাব নিয়ে গঠিত একটি লাইন
(ASCII 9), এবং একটি নতুন লাইন বা শেষ-অফ-ফাইল দ্বারা সমাপ্ত। ক অ-খালি লাইন একটি লাইন
স্থান বা ট্যাব ব্যতীত এক বা একাধিক অক্ষর ধারণ করে (এবং একটি নতুন লাইন বা
ফাইলের শেষ)।

(বিঃদ্রঃ: অনেক পুরানো পড পার্সার স্পেস/ট্যাব সমন্বিত একটি লাইন গ্রহণ করেনি এবং তারপরে একটি
একটি ফাঁকা লাইন হিসাবে newline. তারা যে লাইনগুলিকে ফাঁকা বলে মনে করেছিল সেগুলি নিয়ে গঠিত লাইনগুলি না।
অক্ষর at সব, একটি নতুন লাইন দ্বারা সমাপ্ত।)

সাদা ব্যবধান এই নথিতে স্পেস, ট্যাব এবং নিউলাইনের জন্য একটি কম্বল শব্দ হিসাবে ব্যবহৃত হয়
ক্রম (নিজেই, এই শব্দটি সাধারণত আক্ষরিক হোয়াইটস্পেসকে বোঝায়। অর্থাৎ,
পড সোর্সে হোয়াইটস্পেস অক্ষরের ক্রম, "E<32>" এর বিপরীতে, যা একটি
ফরম্যাটিং কোড যে বোঝায় একটি হোয়াইটস্পেস অক্ষর।)

A শুঁটি পার্সার পড পার্স করার জন্য একটি মডিউল (এটি জড়িত কিনা তা নির্বিশেষে
কলব্যাক কল করা বা পার্স ট্রি তৈরি করা বা সরাসরি ফর্ম্যাট করা)। ক শুঁটি ফরম্যাটার
(অথবা শুঁটি অনুবাদক) হল একটি মডিউল বা প্রোগ্রাম যা পডকে অন্য কোনো ফরম্যাটে রূপান্তর করে (HTML,
প্লেইনটেক্সট, টেক্স, পোস্টস্ক্রিপ্ট, আরটিএফ)। ক শুঁটি প্রসেসর একটি ফরম্যাটার বা অনুবাদক হতে পারে, অথবা
এমন একটি প্রোগ্রাম হতে পারে যা পডের সাথে অন্য কিছু করে (যেমন শব্দ গণনা করা, স্ক্যান করা
সূচক পয়েন্ট, ইত্যাদির জন্য)।

পড বিষয়বস্তু অন্তর্ভুক্ত করা হয় শুঁটি ব্লক. একটি পড ব্লক মেলে এমন একটি লাইন দিয়ে শুরু হয়
"m/\A=[a-zA-Z]/", এবং পরবর্তী লাইন পর্যন্ত চলতে থাকে যা "m/\A=cut/" এর সাথে মেলে বা
"m/\A=cut/" লাইন না থাকলে ফাইলের শেষ।

একটি পড ব্লকের মধ্যে, আছে শুঁটি অনুচ্ছেদ. একটি পড অনুচ্ছেদে অ-খালি লাইন থাকে
পাঠ্যের, এক বা একাধিক ফাঁকা লাইন দ্বারা বিভক্ত।

পড প্রক্রিয়াকরণের উদ্দেশ্যে, একটি পড ব্লকে চার ধরনের অনুচ্ছেদ রয়েছে:

· একটি কমান্ড অনুচ্ছেদ (এটিকে "নির্দেশ"ও বলা হয়)। এই অনুচ্ছেদের প্রথম লাইন
অবশ্যই মিলতে হবে "m/\A=[a-zA-Z]/"। কমান্ড অনুচ্ছেদ সাধারণত এক লাইন, যেমন:

= head1 নোট

= আইটেম *

কিন্তু তারা বেশ কয়েকটি (অ-ফাঁকা) লাইন স্প্যান করতে পারে:

= মন্তব্যের জন্য
হুম, আমি ভাবছি এটা দেখতে কেমন হবে
আপনি এটি থেকে পডের জন্য একটি BNF লেখার চেষ্টা করেছেন।

=head3 ডাঃ স্ট্রেঞ্জলাভ, বা: আমি কিভাবে শিখেছি
উদ্বেগ বন্ধ করুন এবং বোমাকে ভালোবাসুন

কিছু কমান্ড অনুচ্ছেদ তাদের বিষয়বস্তুতে কোড ফরম্যাটিং করার অনুমতি দেয় (অর্থাৎ, অংশের পরে
যা মেলে "m/\A=[a-zA-Z]\S*\s*/"), যেমন:

=head1 আপনি কি C এর কথা মনে রেখেছেন? ?

অন্য কথায়, "head1"-এর জন্য Pod প্রসেসিং হ্যান্ডলার একই প্রসেসিং প্রয়োগ করবে
"আপনি কি মনে রেখেছেন সি ?" যে এটি একটি সাধারণ অনুচ্ছেদে (যেমন,
ফরম্যাটিং কোড যেমন "C<...>") পার্স করা হয় এবং সম্ভবত যথাযথভাবে ফরম্যাট করা হয়, এবং
আক্ষরিক স্পেস এবং/অথবা ট্যাব আকারে সাদা স্থান উল্লেখযোগ্য নয়।

· এ আক্ষরিকভাবে অনুচ্ছেদ. এই অনুচ্ছেদের প্রথম লাইন একটি আক্ষরিক স্থান হতে হবে বা
ট্যাব, এবং এই অনুচ্ছেদটি একটি "=শুরুতে থাকা উচিত নয় আইডেন্টিফায়ার", ..." = শেষ
আইডেন্টিফায়ার"অনুক্রম যদি না"আইডেন্টিফায়ার" একটি কোলন দিয়ে শুরু হয় (":")। অর্থাৎ, যদি a
অনুচ্ছেদ একটি আক্ষরিক স্থান বা ট্যাব দিয়ে শুরু হয়, কিন্তু is একটি "= শুরুর ভিতরে আইডেন্টিফায়ার", ...
"= শেষ আইডেন্টিফায়ার" অঞ্চল, তারপর এটি একটি ডেটা অনুচ্ছেদ, যদি না "আইডেন্টিফায়ার" সঙ্গে শুরু
একটি কোলন

সাদা ব্যবধান is মৌখিক অনুচ্ছেদে তাৎপর্যপূর্ণ (যদিও, প্রক্রিয়াকরণে, ট্যাবগুলি হয়
সম্ভবত প্রসারিত)।

· একটি সাধারণ অনুচ্ছেদ. একটি অনুচ্ছেদ একটি সাধারণ অনুচ্ছেদ যদি এর প্রথম লাইন মেলে
"m/\A=[a-zA-Z]/" না "m/\A[ \t]/", এবং যদি এটি একটি "= শুরু না হয়
আইডেন্টিফায়ার", ..." = শেষ আইডেন্টিফায়ার"অনুক্রম যদি না"আইডেন্টিফায়ার"কোলন দিয়ে শুরু হয়
(":")।

· এ উপাত্ত অনুচ্ছেদ. এটি একটি অনুচ্ছেদ যে is একটি "= শুরুর ভিতরে আইডেন্টিফায়ার"..." = শেষ
আইডেন্টিফায়ার"ক্রম যেখানে"আইডেন্টিফায়ার" করে না একটি আক্ষরিক কোলন দিয়ে শুরু করুন (":")। ভিতরে
কিছু অর্থে, একটি ডেটা অনুচ্ছেদ মোটেও পডের অংশ নয় (অর্থাৎ, কার্যকরভাবে এটি "আউট-
অফ-ব্যান্ড"), যেহেতু এটি বেশিরভাগ ধরণের পড পার্সিংয়ের বিষয় নয়; তবে এটি নির্দিষ্ট করা আছে
এখানে, যেহেতু পড পার্সারদের এটির জন্য একটি ইভেন্ট কল করতে বা এটিকে কিছুতে সংরক্ষণ করতে সক্ষম হতে হবে
একটি পার্স গাছে ফর্ম, বা অন্তত শুধু পার্স কাছাকাছি এটা.

উদাহরণস্বরূপ: নিম্নলিখিত অনুচ্ছেদ বিবেচনা করুন:

# <- এটি 0 তম কলাম

= head1 Foo

কাপড়

$foo->বার

= কাটা

এখানে, "=head1 Foo" এবং "=cut" কমান্ড অনুচ্ছেদ কারণ প্রতিটির প্রথম লাইন
মেলে "m/\A=[a-zA-Z]/"। "[স্পেস][স্পেস]$foo->bar" একটি শব্দচয়ন অনুচ্ছেদ, কারণ এটি
প্রথম লাইন একটি আক্ষরিক হোয়াইটস্পেস অক্ষর দিয়ে শুরু হয় (এবং সেখানে কোন "=শুরু"..."=শেষ" নেই
আশেপাশের অঞ্চল)।

"=শুরু আইডেন্টিফায়ার"..." = শেষ আইডেন্টিফায়ার" কমান্ডগুলি তারা ঘিরে থাকা অনুচ্ছেদগুলি বন্ধ করে৷
সাধারণ বা শব্দার্থে অনুচ্ছেদ হিসাবে পার্স করা থেকে, যদি আইডেন্টিফায়ার একটি দিয়ে শুরু হয় না
কোলন এটি "ডেটা অনুচ্ছেদ সম্পর্কে এবং" বিভাগে বিশদভাবে আলোচনা করা হয়েছে
"=শুরু/=শেষ" অঞ্চল"।

শুঁটি কমান্ড


এই বিভাগটি "কমান্ড অনুচ্ছেদ"-এ আলোচনার পরিপূরক এবং স্পষ্ট করার উদ্দেশ্যে করা হয়েছে
পার্লপডে। এইগুলি বর্তমানে স্বীকৃত পড কমান্ড:

"=head1", "=head2", "=head3", "=head4"
এই কমান্ডটি নির্দেশ করে যে অনুচ্ছেদের অবশিষ্ট পাঠ্যটি একটি শিরোনাম।
সেই টেক্সটে ফর্ম্যাটিং কোড থাকতে পারে। উদাহরণ:

=head1 অবজেক্ট অ্যাট্রিবিউট

= head3 কি বি করতে!

"= শুঁটি"
এই কমান্ডটি নির্দেশ করে যে এই অনুচ্ছেদটি একটি পড ব্লক শুরু করে। (যদি আমরা ইতিমধ্যেই থাকি
একটি পড ব্লকের মাঝখানে, এই কমান্ডের কোন প্রভাব নেই।) যদি কোন টেক্সট থাকে
এই কমান্ড অনুচ্ছেদে "=pod" এর পরে, এটি অবশ্যই উপেক্ষা করা উচিত। উদাহরণ:

=পড

এটি একটি প্লেইন পড অনুচ্ছেদ।

=pod এই টেক্সট উপেক্ষা করা হয়.

"= কাটা"
এই কমান্ডটি নির্দেশ করে যে এই লাইনটি পূর্বে শুরু হওয়া এই পড ব্লকের শেষ।
যদি লাইনে "=cut" এর পরে কোনো টেক্সট থাকে, তাহলে তা অবশ্যই উপেক্ষা করতে হবে। উদাহরণ:

= কাটা

ডকুমেন্টেশন এখানে শেষ হয়।

= কাটা
# এটি প্রোগ্রাম পাঠ্যের প্রথম লাইন।
sub foo { # এটি দ্বিতীয়।

এটি করার চেষ্টা করা একটি ত্রুটি শুরু একটি "=cut" কমান্ড সহ একটি পড ব্লক। সেই ক্ষেত্রে, দ
পড প্রসেসরকে অবশ্যই ইনপুট ফাইলের পার্সিং বন্ধ করতে হবে এবং ডিফল্টরূপে একটি সতর্কতা নির্গত করতে হবে।

"=ওভার"
এই কমান্ডটি নির্দেশ করে যে এটি একটি তালিকা/ইন্ডেন্ট অঞ্চলের শুরু। আছে যদি
"=ওভার" এর পরের যেকোনো টেক্সট শুধুমাত্র একটি শূন্য পজিটিভ সংখ্যা নিয়ে গঠিত।
এই সংখ্যার শব্দার্থবিদ্যা ব্যাখ্যা করা হয়েছে "সম্পর্কে...=ব্যাক অঞ্চল" এ
অধ্যায়, আরও নীচে। বিন্যাস কোড প্রসারিত করা হয় না. উদাহরণ:

= ৬ এর বেশি

= ৬ এর বেশি

= বেশি

"= আইটেম"
এই কমান্ডটি নির্দেশ করে যে একটি তালিকার একটি আইটেম এখানে শুরু হয়। ফরম্যাটিং কোড হয়
প্রক্রিয়া করা এই অনুচ্ছেদের অবশিষ্টাংশে (ঐচ্ছিক) পাঠ্যের শব্দার্থবিদ্যা
আরও নীচে, "সম্পর্কে =over...=ব্যাক অঞ্চল" বিভাগে ব্যাখ্যা করা হয়েছে। উদাহরণ:

= আইটেম

= আইটেম *

= আইটেম *

= আইটেম 14

= আইটেম 3।

= আইটেম C<< $thing->stuff(I ) >>

= আইটেম সমুদ্রের ওপারে আমাদের পরিবহনের জন্য ভান করার চেষ্টা করা হবে
অপরাধ

= আইটেম তিনি এই সময়ে বিদেশী বৃহৎ সৈন্যবাহিনী পরিবহন করছেন
ভাড়াটেদের মৃত্যু, জনশূন্যতা এবং কাজগুলো সম্পন্ন করার জন্য
অত্যাচার, নিষ্ঠুরতা এবং বেপরোয়া পরিস্থিতির সাথে ইতিমধ্যেই শুরু হয়েছে
সবচেয়ে বর্বর যুগে খুব কমই সমান্তরাল, এবং সম্পূর্ণরূপে
একটি সভ্য জাতির প্রধান অযোগ্য।

"= ফিরে"
এই কমান্ডটি ইঙ্গিত করে যে এটি সবচেয়ে সাম্প্রতিক দ্বারা শুরু হওয়া অঞ্চলের শেষ
"= ওভার" কমান্ড। এটি "=ব্যাক" কমান্ডের পরে কোনও পাঠ্যের অনুমতি দেয় না।

"=শুরু বিন্যাসের নাম"
"= বিন্যাস নাম পরামিতি শুরু করুন"
এটি নিম্নলিখিত অনুচ্ছেদগুলিকে চিহ্নিত করে (যতক্ষণ না মিলছে "=শেষ ফর্ম্যাটনাম")
কিছু বিশেষ ধরনের প্রক্রিয়াকরণের জন্য। যদি না "ফরম্যাটনাম" একটি কোলন দিয়ে শুরু হয়,
অন্তর্ভুক্ত নন-কমান্ড অনুচ্ছেদগুলি ডেটা অনুচ্ছেদ। কিন্তু যদি "ফরম্যাটনেম" না শুরু করা
একটি কোলন সহ, তারপর অ-কমান্ড অনুচ্ছেদগুলি সাধারণ অনুচ্ছেদ বা ডেটা অনুচ্ছেদ।
এটি "ডেটা অনুচ্ছেদ সম্পর্কে এবং "=শুরু/=শেষ" বিভাগে বিশদভাবে আলোচনা করা হয়েছে
অঞ্চল"।

এটি পরামর্শ দেওয়া হয় যে ফর্ম্যাটনামগুলি regexp "m/\A:?[-a-zA-Z0-9_]+\z/" এর সাথে মেলে। সবকিছু
ফরম্যাটের নামের পরে সাদা স্থান অনুসরণ করা একটি প্যারামিটার যা দ্বারা ব্যবহার করা যেতে পারে
এই অঞ্চলের সাথে কাজ করার সময় formatter. এই পরামিতি পুনরাবৃত্তি করা উচিত নয়
"=শেষ" অনুচ্ছেদ। বাস্তবায়নকারীদের শব্দার্থবিদ্যায় ভবিষ্যৎ সম্প্রসারণের প্রত্যাশা করা উচিত
এবং প্রথম প্যারামিটারের সিনট্যাক্স "=begin"/"=end"/"=for"।

"=শেষ বিন্যাসের নাম"
এটি "=begin ফরম্যাটনাম" অঞ্চলের সাথে মিলে যাওয়া অঞ্চল দ্বারা খোলা অঞ্চলের শেষ চিহ্নিত করে৷
যদি "ফরম্যাটনাম" সবচেয়ে সাম্প্রতিক খোলা "=বিন বিন্যাস নাম" এর ফর্ম্যাটনাম না হয়
অঞ্চল, তাহলে এটি একটি ত্রুটি, এবং একটি ত্রুটি বার্তা তৈরি করতে হবে। এই আলোচনা করা হয়
"ডেটা অনুচ্ছেদ এবং "=শুরু/=শেষ" অঞ্চল সম্পর্কে বিভাগে বিস্তারিতভাবে।

"= ফরম্যাটের নামের পাঠ্যের জন্য..."
এটি এর সমার্থক:

= বিন্যাস নাম শুরু করুন

পাঠ্য...

= শেষ বিন্যাস নাম

অর্থাৎ, এটি একটি একক অনুচ্ছেদ নিয়ে গঠিত একটি অঞ্চল তৈরি করে; যে অনুচ্ছেদ হতে হয়
একটি সাধারণ অনুচ্ছেদ হিসাবে বিবেচনা করা হয় যদি "ফরম্যাটনাম" একটি ":" দিয়ে শুরু হয়; যদি "ফরম্যাটনেম"
না একটি কোলন দিয়ে শুরু করুন, তারপর "টেক্সট..." একটি ডেটা অনুচ্ছেদ গঠন করবে। এখানে
একটি শব্দার্থে অনুচ্ছেদ হিসাবে "পাঠ্য..." প্রকাশ করার জন্য "= ফরম্যাটনাম পাঠ্য..." ব্যবহার করার কোন উপায় নেই।

"=এনকোডিং এনকোডিং নাম"
এই কমান্ডটি, যা নথির প্রথম দিকে ঘটতে হবে (অন্তত কোনো অ-মার্কিন-এর আগে-
ASCII ডেটা!), ঘোষণা করে যে এই নথিটি এনকোডিংয়ে এনকোড করা হয়েছে এনকোডিং নাম,
যা অবশ্যই একটি এনকোডিং নাম হতে হবে যা এনকোড স্বীকৃতি দেয়৷ (এনকোডের সমর্থিত তালিকা
এনকোডিং, এনকোড::সমর্থিত, এখানে দরকারী।) যদি পড পার্সার ডিকোড করতে না পারে
ঘোষিত এনকোডিং, এটি একটি সতর্কতা নির্গত করা উচিত এবং নথি পার্সিং বাতিল করতে পারে
পুরাপুরি।

একাধিক "=এনকোডিং" লাইন আছে এমন একটি নথিকে একটি ত্রুটি হিসাবে বিবেচনা করা উচিত। পড
প্রসেসর নীরবে এটি সহ্য করতে পারে যদি প্রথম নয় "=এনকোডিং" লাইন ঠিক হয়
প্রথমটির নকল
আরেকটি "=এনকোডিং utf8" লাইন)। কিন্তু পড প্রসেসর থাকলে অভিযোগ করা উচিত
একই নথিতে বিপরীত "=এনকোডিং" লাইন (যেমন, যদি একটি "=এনকোডিং" থাকে
utf8" ডকুমেন্টের প্রথম দিকে এবং "=এনকোডিং big5" পরে)। পড প্রসেসর যা
স্বীকার করুন BOMগুলিও অভিযোগ করতে পারে যদি তারা একটি "= এনকোডিং" লাইন দেখতে পায় যা বিরোধিতা করে
BOM (উদাহরণস্বরূপ, যদি UTF-16LE BOM-এর সাথে একটি নথিতে "=এনকোডিং শিফটজিস" লাইন থাকে)।

যদি একটি পড প্রসেসর উপরে তালিকাভুক্ত (যেমন "=হেড", বা
"=haed1", বা "=stuff", বা "=cuttlefish", বা "=w123"), সেই প্রসেসরকে অবশ্যই ডিফল্টভাবে ব্যবহার করতে হবে
এটি একটি ত্রুটি হিসাবে। এটি অবশ্যই সেই কমান্ড দিয়ে শুরু হওয়া অনুচ্ছেদটি প্রক্রিয়া করবে না, অবশ্যই দ্বারা
ডিফল্ট এটিকে একটি ত্রুটি হিসাবে সতর্ক করে এবং পার্সটি বাতিল করতে পারে। একটি পড পার্সার একটি উপায় অনুমতি দিতে পারে
নির্দিষ্ট অ্যাপ্লিকেশনের জন্য পরিচিত কমান্ডের উপরোক্ত তালিকায় যোগ করার জন্য, এবং নির্দিষ্ট করার জন্য,
প্রতিটি অতিরিক্ত কমান্ডের জন্য, ফর্ম্যাটিং কোডগুলি প্রক্রিয়া করা উচিত কিনা।

এই স্পেসিফিকেশনের ভবিষ্যত সংস্করণ অতিরিক্ত কমান্ড যোগ করতে পারে।

শুঁটি বিন্যাস কোড


(উল্লেখ্য যে এই নথির এবং পার্লপডের পূর্ববর্তী খসড়াগুলিতে, ফর্ম্যাটিং কোডগুলি ছিল
"অভ্যন্তরীণ সিকোয়েন্স" হিসাবে উল্লেখ করা হয় এবং এই শব্দটি এখনও ডকুমেন্টেশনে পাওয়া যেতে পারে
পড পার্সারের জন্য এবং পড প্রসেসরের ত্রুটি বার্তায়।)

কোড ফরম্যাটিং করার জন্য দুটি সিনট্যাক্স আছে:

একটি ফর্ম্যাটিং কোড একটি বড় অক্ষর দিয়ে শুরু হয় (শুধু US-ASCII [AZ]) এর পরে একটি
"<", যে কোনো সংখ্যক অক্ষর, এবং প্রথম মিলে যাওয়া ">" দিয়ে শেষ। উদাহরণ:

সেটাই আমি ভাবুন!

সি কি জন্য?

এক্স এবং সি বিভিন্ন অপারেটিং সিস্টেমের অধীনে>

একটি ফর্ম্যাটিং কোড একটি বড় অক্ষর দিয়ে শুরু হয় (শুধু US-ASCII [AZ]) এর পরে দুটি
বা তার বেশি "<"'স, এক বা একাধিক হোয়াইটস্পেস অক্ষর, যেকোনো সংখ্যক অক্ষর, এক বা
আরও হোয়াইটস্পেস অক্ষর, এবং দুই বা ততোধিক প্রথম ম্যাচিং ক্রম দিয়ে শেষ হয়
">"এর, যেখানে ">" এর সংখ্যা এটির খোলার "<" এর সংখ্যার সমান
ফরম্যাটিং কোড। উদাহরণ:

সেটাই আমি << তুমি> ভাবি!

C<<< open(X, ">>thing.dat") || মরে $! >>>

B<< $foo->বার(); >>

এই সিনট্যাক্সের সাথে, "C<<<" এর পরে এবং ">>>" এর আগে হোয়াইটস্পেস অক্ষর(গুলি)
(বা যাই হোক না কেন চিঠি) হয় না রেন্ডারযোগ্য তারা হোয়াইটস্পেস বোঝায় না, নিছক
ফরম্যাটিং কোডের অংশ। অর্থাৎ, এগুলি সব সমার্থক:


C<< জিনিস >>
C<< জিনিস >>
সি<<< জিনিস >>>
সি<<<
জিনিস
>>>>

এবং তাই.

অবশেষে, একাধিক-কোণ-বন্ধনী ফর্ম করে না নেস্টেডের ব্যাখ্যা পরিবর্তন করুন
ফরম্যাটিং কোড, যার মানে নিচের চারটি উদাহরণ লাইনে অভিন্ন
অর্থ:

খ =ই $b>>

খ $b >>>

খ =ই $b >>>

B<<< উদাহরণ: C<< $a E =ই $b >> >>>

পড পার্স করার ক্ষেত্রে, একটি উল্লেখযোগ্যভাবে জটিল অংশ হল সঠিক পার্সিং (সম্ভাব্যভাবে নেস্টেড!)
ফরম্যাটিং কোড। বাস্তবায়নকারীদের "পার্স_টেক্সট" রুটিনে কোডের সাথে পরামর্শ করা উচিত
পড::পার্সার একটি সঠিক বাস্তবায়নের উদাহরণ হিসাবে।

"আমি " -- তির্যক পাঠ্য
পার্লপডের "ফরম্যাটিং কোড" এ সংক্ষিপ্ত আলোচনা দেখুন।

"বি " -- পাঠ্য বোল্ড
পার্লপডের "ফরম্যাটিং কোড" এ সংক্ষিপ্ত আলোচনা দেখুন।

"C " -- code text
পার্লপডের "ফরম্যাটিং কোড" এ সংক্ষিপ্ত আলোচনা দেখুন।

"এফ " -- ফাইলের নামের জন্য শৈলী
পার্লপডের "ফরম্যাটিং কোড" এ সংক্ষিপ্ত আলোচনা দেখুন।

"এক্স " -- একটি সূচক এন্ট্রি
পার্লপডের "ফরম্যাটিং কোড" এ সংক্ষিপ্ত আলোচনা দেখুন।

এই কোডটি অস্বাভাবিক যে বেশিরভাগ ফরম্যাটার এই কোড এবং এর সম্পূর্ণরূপে বাতিল করে দেয়
বিষয়বস্তু অন্যান্য ফরম্যাটারগুলি এটিকে অদৃশ্য কোডগুলির সাথে রেন্ডার করবে যা ব্যবহার করা যেতে পারে৷
বর্তমান নথির একটি সূচক তৈরি করা।

"Z<>" -- একটি নাল (শূন্য-প্রভাব) ফর্ম্যাটিং কোড
পার্লপডের "ফরম্যাটিং কোড" এ সংক্ষিপ্তভাবে আলোচনা করা হয়েছে।

এই কোড অস্বাভাবিক যে এটি কোন বিষয়বস্তু থাকা উচিত. অর্থাৎ একটি প্রসেসর মে
যদি এটি "Z" দেখেন তবে অভিযোগ করুন ". এটা অভিযোগ করুক বা না করুক, দ আলু পাঠ
উপেক্ষা করা উচিত।

"এল " -- একটি হাইপারলিঙ্ক
এই কোডের জটিল সিনট্যাক্সগুলি "ফরম্যাটিং কোড"-এ দৈর্ঘ্যে আলোচনা করা হয়েছে
perlpod, এবং বাস্তবায়নের বিবরণ নীচে "L<...> কোড সম্পর্কে" আলোচনা করা হয়েছে।
এল এর বিষয়বস্তু পার্সিং চতুর উল্লেখযোগ্যভাবে, বিষয়বস্তু পরীক্ষা করতে হবে
এটি একটি URL এর মত দেখাচ্ছে কিনা বা এটিকে আক্ষরিক "|" এ বিভক্ত করতে হবে কিনা তার জন্য এবং/অথবা
"/" (সঠিক ক্রমে!), এবং তাই, আগে E<...> কোডগুলি সমাধান করা হয়েছে।

"ই " -- একটি চরিত্রের পলায়ন
পার্লপড-এ "ফরম্যাটিং কোড" এবং "পড বাস্তবায়নের নোট"-এ কয়েকটি পয়েন্ট দেখুন
প্রসেসর"।

"এস " -- টেক্সটে অ-ব্রেকিং স্পেস রয়েছে
এই ফরম্যাটিং কোড সিনট্যাক্টিক্যালি সহজ, কিন্তু শব্দার্থগতভাবে জটিল। এর মানে কি
এই কোডের মুদ্রণযোগ্য বিষয়বস্তুর প্রতিটি স্থান একটি অ-ব্রেকিং নির্দেশ করে
স্থান।

বিবেচনা:

C<$x? $y : $z>

এস >

উভয়ই "$x", একটি স্থান, "?", একটি সমন্বিত মনোস্পেস (c[ode] শৈলী) পাঠ্যকে বোঝায়
স্পেস, ":", একটি স্পেস, "$z"। পার্থক্য হল যে পরবর্তীতে, এস কোডের সাথে,
এই স্পেসগুলি "স্বাভাবিক" স্পেস নয়, বরং এর পরিবর্তে নন-ব্রেকিং স্পেস।

যদি একটি পড প্রসেসর উপরে তালিকাভুক্ত কোডগুলি ছাড়া অন্য কোনও ফর্ম্যাটিং কোড দেখতে পায় (যেমন
"N<...>", বা "Q<...>", ইত্যাদি), সেই প্রসেসরকে ডিফল্টরূপে এটিকে একটি ত্রুটি হিসাবে বিবেচনা করতে হবে। ক
পড পার্সার নির্দিষ্ট অ্যাপ্লিকেশনের জন্য পরিচিত উপরের তালিকায় যোগ করার জন্য একটি উপায় অনুমতি দিতে পারে
ফরম্যাটিং কোড; একটি পড পার্সার এমনকি প্রতিটি অতিরিক্তের জন্য একটি উপায় নির্ধারণ করার অনুমতি দিতে পারে
কমান্ড, এটির জন্য কিছু বিশেষ প্রক্রিয়াকরণের প্রয়োজন আছে কিনা, যেমন L<...> করে।

এই স্পেসিফিকেশনের ভবিষ্যত সংস্করণ অতিরিক্ত ফরম্যাটিং কোড যোগ করতে পারে।

ঐতিহাসিক নোট: কিছু পুরানো পড প্রসেসর একটি "C<" কোড বন্ধ করার মত ">" দেখতে পাবে না,
যদি ">" এর আগে একটি "-" থাকে। এটি ছিল তাই এই:

C<$foo->বার>

এটির সমতুল্য হিসাবে পার্স করবে:

C<$foo-E বার>

শুধুমাত্র "$foo-" সম্বলিত একটি "C" ফরম্যাটিং কোডের সমতুল্য না হয়ে, এবং তারপর একটি
"bar>" "C" ফরম্যাটিং কোডের বাইরে। তারপর থেকে এই সমস্যাটি সমাধান করা হয়েছে
এই মত সিনট্যাক্স যোগ করুন:

C<< $foo->বার >>

অনুগত পার্সারদের অবশ্যই "->" বিশেষ হিসাবে বিবেচনা করা উচিত নয়৷

বিন্যাস কোড একেবারে অনুচ্ছেদ স্প্যান করতে পারে না. যদি একটি কোড একটি অনুচ্ছেদে খোলা হয়,
এবং সেই অনুচ্ছেদের শেষে কোনো ক্লোজিং কোড পাওয়া যায় না, পড পার্সারকে অবশ্যই সেটি বন্ধ করতে হবে
ফরম্যাটিং কোড, এবং অভিযোগ করা উচিত (যেমন "আনটারমিনেটেড আই কোড শুরু অনুচ্ছেদে
লাইন 123 এ: 'সময় বস্তু নয়...'") তাই এই দুটি অনুচ্ছেদ:

আমি

আমাকে আবার বলবেন না!>

...অবশ্যই না তির্যক ভাষায় দুটি অনুচ্ছেদ হিসাবে পার্স করা হবে (একটি থেকে শুরু I কোড সহ
অনুচ্ছেদ এবং অন্যটিতে শুরু হচ্ছে।) পরিবর্তে, প্রথম অনুচ্ছেদটি একটি তৈরি করবে
সতর্কতা, কিন্তু একপাশে, উপরের কোডটি পার্স করতে হবে যেন এটি ছিল:

আমি

আমাকে এটা আবার বলতে বাধ্য করবেন না!

(SGMLish জার্গনে, সমস্ত পড কমান্ড ব্লক-স্তরের উপাদানগুলির মতো, যেখানে সমস্ত পড
ফর্ম্যাটিং কোডগুলি ইনলাইন-স্তরের উপাদানগুলির মতো।)

নোট on বাস্তবায়নকারী শুঁটি প্রসেসর


নিম্নলিখিত বিবিধ প্রয়োজনীয়তা এবং পরামর্শের একটি দীর্ঘ বিভাগ যা করতে হবে
পড প্রক্রিয়াকরণ।

· পড ফরম্যাটারদের শব্দচয়ন ব্লকে লাইন সহ্য করা উচিত যা যেকোনো দৈর্ঘ্যের, এমনকি
যদি এর মানে হল সেগুলি ভাঙতে হয় (সম্ভবত বেশ কয়েকবার, খুব দীর্ঘ লাইনের জন্য)
পৃষ্ঠার পাশ থেকে পাঠ্য চলমান এড়ান। পড ফরম্যাটাররা এই ধরনের লাইন সম্পর্কে সতর্ক করতে পারে-
ভাঙ্গা 100 টির বেশি লাইনের জন্য এই ধরনের সতর্কতা বিশেষভাবে উপযুক্ত
অক্ষর দীর্ঘ, যা সাধারণত ইচ্ছাকৃত হয় না।

· পড পার্সারদের অবশ্যই চিনতে হবে সব তিনটি সুপরিচিত নতুন লাইন বিন্যাসের মধ্যে: CR, LF, এবং
সিআরএলএফ। পার্লপোর্ট দেখুন।

· পড পার্সারদের যেকোনো দৈর্ঘ্যের ইনপুট লাইন গ্রহণ করা উচিত।

যেহেতু পার্ল ফাইলের শুরুতে একটি ইউনিকোড বাইট অর্ডার মার্ককে সিগন্যালিং হিসাবে স্বীকৃতি দেয়
যে ফাইলটি ইউটিএফ-১৬ (বিগ-এন্ডিয়ান বা লিটল-এন্ডিয়ান) বা
UTF-8, পড পার্সারদেরও একই কাজ করা উচিত। অন্যথায়, অক্ষর এনকোডিং হওয়া উচিত
ফাইলে প্রথম হাইবিট বাইট সিকোয়েন্সটি বৈধ বলে মনে হলে UTF-8 হিসেবে বোঝা যায়
একটি UTF-8 ক্রম হিসাবে, বা অন্যথায় CP-1252 হিসাবে (এই স্পেসিফিকেশনের আগের সংস্করণগুলি
CP-1 এর পরিবর্তে ল্যাটিন-1252 ব্যবহার করা হয়েছে)।

এই স্পেসিফিকেশনের ভবিষ্যত সংস্করণগুলি নির্দিষ্ট করতে পারে কিভাবে পড অন্যান্য এনকোডিং গ্রহণ করতে পারে।
সম্ভবত পড পার্সিং-এ অন্যান্য এনকোডিংগুলির চিকিত্সা XML পার্সিংয়ের মতো হবে:
একটি নির্দিষ্ট পড ফাইল দ্বারা ঘোষিত এনকোডিং যাই হোক না কেন, সামগ্রী সংরক্ষণ করতে হবে
ইউনিকোড অক্ষর হিসাবে মেমরি।

· সুপরিচিত ইউনিকোড বাইট অর্ডার মার্কগুলি নিম্নরূপ: যদি ফাইলটি দিয়ে শুরু হয়
দুটি আক্ষরিক বাইট মান 0xFE 0xFF, এটি বিগ-এন্ডিয়ান UTF-16-এর জন্য BOM। ফাইল হলে
দুটি আক্ষরিক বাইট মান 0xFF 0xFE দিয়ে শুরু হয়, এটি লিটল-এন্ডিয়ানের জন্য BOM
UTF-16। একটি ASCII প্ল্যাটফর্মে, যদি ফাইলটি তিনটি আক্ষরিক বাইট মান দিয়ে শুরু হয়
0xEF 0xBB 0xBF, এটি UTF-8 এর BOM। EBCDIC প্ল্যাটফর্মে বহনযোগ্য একটি প্রক্রিয়া
হয়:

আমার $utf8_bom = "\x{FEFF}";
utf8::এনকোড($utf8_bom);

· একটি নিষ্পাপ, কিন্তু প্রায়ই ASCII প্ল্যাটফর্মে পর্যাপ্ত হিউরিস্টিক, প্রথমটি পরীক্ষা করার জন্য
একটি BOM-হীন ফাইলে হাইবিট বাইট-সিকোয়েন্স (কোড হোক বা পডে!), তা দেখতে
UTF-8 (RFC 2279) হিসাবে সেই ক্রমটি বৈধ কিনা তা পরীক্ষা করার জন্য প্রথম বাইটটি
ক্রমটি 0xC2 - 0xFD পরিসরে রয়েছে৷ এবং পরবর্তী বাইট পরিসরে আছে কিনা
0x80 - 0xBF। যদি তাই হয়, পার্সার উপসংহারে আসতে পারে যে এই ফাইলটি UTF-8, এবং সবকটিতে রয়েছে
ফাইলের হাইবিট সিকোয়েন্সগুলিকে UTF-8 বলে ধরে নেওয়া উচিত৷ অন্যথায় পার্সার
ফাইলটিকে CP-1252 হিসাবে বিবেচনা করা উচিত। (একটি ভাল পরীক্ষা, এবং যা EBCDIC তে কাজ করে
পাশাপাশি প্ল্যাটফর্মগুলিকে অনুক্রমের একটি অনুলিপি পাস করতে হবে utf8::ডিকোড() যা সম্পাদন করে
অনুক্রমের একটি সম্পূর্ণ বৈধতা পরীক্ষা করে এবং যদি এটি বৈধ UTF-8, মিথ্যা হয় তাহলে TRUE প্রদান করে
অন্যথায় এই ফাংশনটি সর্বদা প্রি-লোড হয়, দ্রুত কারণ এটি সি তে লেখা হয়,
এবং শুধুমাত্র একবারে কল করা হবে, তাই আপনাকে এটি এড়াতে হবে না
কর্মক্ষমতা উদ্বেগ.) অসম্ভাব্য পরিস্থিতিতে যে প্রথম হাইবিট ক্রম
একটি সত্যিকারের নন-UTF-8 ফাইলে UTF-8 বলে মনে হয়, কেউ আমাদের পূরণ করতে পারে
হিউরিস্টিক (পাশাপাশি আরও বুদ্ধিমান হিউরিস্টিক) একটি দিয়ে সেই লাইনটি পূর্বে দিয়ে
একটি হাইবিট ক্রম ধারণকারী মন্তব্য লাইন যা স্পষ্টভাবে না UTF-8 হিসাবে বৈধ। একটি লাইন
কেবলমাত্র "#", একটি ই-অ্যাকিউট, এবং যেকোন নন-হাইবিট বাইট নিয়ে গঠিত, যথেষ্ট
এই ফাইলের এনকোডিং স্থাপন করুন।

· পড প্রসেসরগুলিকে অবশ্যই "=ফর [লেবেল] [সামগ্রী...]" অনুচ্ছেদের অর্থ হিসাবে বিবেচনা করতে হবে
একটি "=শুরু [লেবেল]" অনুচ্ছেদ, বিষয়বস্তু এবং একটি "=শেষ [লেবেল]" অনুচ্ছেদ হিসাবে জিনিস। (দ্য
পার্সার এই দুটি গঠনকে একত্রিত করতে পারে, অথবা এগুলিকে আলাদা করে রেখে যেতে পারে
আশা করি যে ফরম্যাটার তবুও তাদের সাথে একই আচরণ করবে।)

· পডকে এমন একটি বিন্যাসে রেন্ডার করার সময় যা মন্তব্যের অনুমতি দেয় (অর্থাৎ, প্রায় যেকোনো বিন্যাসে অন্য
প্লেইনটেক্সটের চেয়ে), একটি পড ফরম্যাটারকে অবশ্যই তার নাম চিহ্নিত করে মন্তব্য পাঠ্য সন্নিবেশ করাতে হবে
সংস্করণ নম্বর, এবং এটি ব্যবহার করতে পারে এমন যেকোনো মডিউলের নাম এবং সংস্করণ নম্বর
পড প্রক্রিয়া করুন। ন্যূনতম উদাহরণ:

%% POD::Pod2PS v3.14159, POD::Parser v1.92 ব্যবহার করে



{\doccomm Pod::Tree::RTF 3.14159 দ্বারা Pod::Tree 1.08 ব্যবহার করে তৈরি করা হয়েছে

.\" Pod::Man সংস্করণ 3.14159, POD::পার্সার সংস্করণ 1.92 ব্যবহার করে

ফরম্যাটাররা অতিরিক্ত মন্তব্যও সন্নিবেশ করতে পারে, যার মধ্যে রয়েছে: পডের প্রকাশের তারিখ
ফরম্যাটার প্রোগ্রাম, ফরম্যাটারের লেখক(দের) যোগাযোগের ঠিকানা, বর্তমান
সময়, ইনপুট ফাইলের নাম, কার্যকর ফর্ম্যাটিং বিকল্প, পার্লের সংস্করণ ব্যবহৃত,
ইত্যাদি।

বিন্যাসকারীরা মন্তব্য হিসাবে ত্রুটি/সতর্কতা নোট করতেও বেছে নিতে পারে, পাশাপাশি বা পরিবর্তে
অন্যথায় সেগুলি নির্গত করা (যেমন STDERR-এর কাছে বার্তাগুলিতে, বা "ডাই"িং)।

· পড পার্সার may সতর্কতা বা ত্রুটি বার্তা নির্গত করুন ("অজানা ই কোড ই !") STDERR থেকে
(STDERR-এ মুদ্রণের মাধ্যমে হোক বা "সতর্ক" করা/"কার্প" করা বা "ডাই"িং/"ক্রোক"িং এর মাধ্যমে)
কিন্তু অবশ্যই এই ধরনের সমস্ত STDERR আউটপুট দমন করার অনুমতি দিন এবং পরিবর্তে একটি বিকল্পের জন্য অনুমতি দিন
অন্য কোনো উপায়ে ত্রুটি/সতর্কতা প্রতিবেদন করা, কলব্যাক ট্রিগার করে হোক বা
ডকুমেন্ট অবজেক্টের কিছু অ্যাট্রিবিউটে ত্রুটিগুলি লক্ষ্য করা, বা কিছু একইভাবে নিরবচ্ছিন্ন
প্রক্রিয়া -- অথবা পার্সকৃত ফর্মের শেষে একটি "পড এররস" বিভাগ যোগ করেও
নথির।

· ব্যতিক্রমী নথিপত্রের ক্ষেত্রে, পড পার্সাররা পার্সটি বাতিল করতে পারে। এমন কি
তারপর, "die"ing/"croak"ing ব্যবহার এড়াতে হবে; যেখানে সম্ভব, পার্সার লাইব্রেরি
সহজভাবে ইনপুট ফাইল বন্ধ করতে পারে এবং "*** ফরম্যাটিং বাতিল করা হয়েছে ***" এর মতো পাঠ্য যোগ করতে পারে
(আংশিক) ইন-মেমরি নথির শেষ।

· অনুচ্ছেদে যেখানে ফর্ম্যাটিং কোডগুলি (যেমন E<...>, B<...>) বোঝা যায় (যেমন, না
শব্দার্থে অনুচ্ছেদ, কিন্তু সুদ্ধ সাধারণ অনুচ্ছেদ, এবং কমান্ড অনুচ্ছেদ যে
রেন্ডারযোগ্য পাঠ্য তৈরি করুন, যেমন "=head1"), আক্ষরিক হোয়াইটস্পেস সাধারণত হওয়া উচিত
"তুচ্ছ" হিসাবে বিবেচিত, যে একটি আক্ষরিক স্থান যে কোনো হিসাবে একই অর্থ আছে
(অশূন্য) আক্ষরিক স্থানের সংখ্যা, আক্ষরিক নতুন লাইন এবং আক্ষরিক ট্যাবগুলি (যতক্ষণ পর্যন্ত
এটি কোন ফাঁকা লাইন তৈরি করে না, যেহেতু এটি অনুচ্ছেদটি শেষ করবে)। পড পার্সার্স
প্রতিটি প্রক্রিয়াকৃত অনুচ্ছেদে আক্ষরিক হোয়াইটস্পেস কমপ্যাক্ট করা উচিত, তবে একটি প্রদান করতে পারে
এটিকে ওভাররাইড করার জন্য বিকল্প (যেহেতু কিছু প্রক্রিয়াকরণ কাজের জন্য এটির প্রয়োজন হয় না), বা হতে পারে
অতিরিক্ত বিশেষ নিয়ম অনুসরণ করুন (উদাহরণস্বরূপ, বিশেষভাবে সময়-স্থান-স্থান বা
পিরিয়ড-নতুন লাইন সিকোয়েন্স)।

· পড পার্সারদের, ডিফল্টরূপে, অ্যাপোস্ট্রফি (') এবং (") উদ্ধৃত করার চেষ্টা করা উচিত নয়
স্মার্ট উদ্ধৃতি (সামান্য 9'স, 66'স, 99'স ইত্যাদি), বা ব্যাকটিক (`)কে কিছুতে পরিণত করার চেষ্টা করবেন না
else কিন্তু একটি একক ব্যাকটিক অক্ষর (একটি খোলা উদ্ধৃতি অক্ষর থেকে আলাদা!), বা না
"--" দুটি বিয়োগ চিহ্ন ছাড়া অন্য কিছুতে। তারা অবশ্যই না যে কোন জিনিস করতে
C<...> ফরম্যাটিং কোডে টেক্সট, এবং কখনই না চিরকাল শব্দার্থে অনুচ্ছেদে পাঠ্য করতে।

· পডকে এমন একটি ফরম্যাটে রেন্ডার করার সময় যেখানে দুই ধরনের হাইফেন (-) থাকে, একটি অ-
ব্রেকিং হাইফেন, এবং আরেকটি যেটি একটি ব্রেকযোগ্য হাইফেন (যেমন "বস্তু-ভিত্তিক", যা
লাইন জুড়ে বিভক্ত করা যেতে পারে "অবজেক্ট-", নিউলাইন, "অরিয়েন্টেড"), ফরম্যাটারগুলি
সাধারণত নন-ব্রেকিং হাইফেনে "-" অনুবাদ করতে উৎসাহিত করা হয়, কিন্তু হিউরিস্টিক প্রয়োগ করতে পারে
এর মধ্যে কিছুকে ব্রেকিং হাইফেনে রূপান্তর করতে।

· পড ফরম্যাটারদের পার্ল কোডের শব্দগুলিকে থাকা থেকে দূরে রাখার জন্য যুক্তিসঙ্গত প্রচেষ্টা করা উচিত
লাইন জুড়ে ভাঙা। উদাহরণস্বরূপ, কিছু ফরম্যাটিং সিস্টেমে "Foo::Bar" হিসাবে দেখা যায়
"Foo::" নতুন লাইন "বার" বা এমনকি "Foo::-" হিসাবে লাইন জুড়ে ভাঙার জন্য যোগ্য
নতুন লাইন "বার"। যেখানে সম্ভব এটি এড়ানো উচিত, হয় সমস্ত লাইন নিষ্ক্রিয় করে-
মধ্য-শব্দে ভাঙা, অথবা অভ্যন্তরীণ বিরাম চিহ্ন দিয়ে নির্দিষ্ট শব্দ মোড়ানো
"এটিকে লাইন জুড়ে ভাঙবেন না" কোডগুলি (যা কিছু বিন্যাসে একক কোড নাও হতে পারে,
কিন্তু প্রতিটি জোড়ার মধ্যে অ-ব্রেকিং শূন্য-প্রস্থ স্পেস সন্নিবেশ করার বিষয় হতে পারে
এক কথায় অক্ষর।)

· পড পার্সারদের উচিত, ডিফল্টরূপে, ট্যাবগুলিকে verbatim প্যারাগ্রাফগুলিতে প্রসারিত করা উচিত
ফরম্যাটার বা অন্য প্রসেসরে পাঠানোর আগে প্রক্রিয়া করা হয়। পার্সাররাও হতে পারে
এটি ওভাররাইড করার জন্য একটি বিকল্পের অনুমতি দিন।

· পড পার্সারদের উচিত, ডিফল্টরূপে, সাধারণ এবং শব্দার্থের শেষে নতুন লাইনগুলি সরিয়ে দেওয়া
ফরম্যাটারে পাঠানোর আগে অনুচ্ছেদ। উদাহরণস্বরূপ, যখন অনুচ্ছেদ
আপনি এখন পড়ছেন বলে বিবেচনা করা যেতে পারে, পড সোর্সে, দিয়ে শেষ করা (এবং ধারণ করা)
নতুন লাইন(গুলি) যা এটিকে শেষ করে, এটিকে শেষ (এবং ধারণকারী) হিসাবে প্রক্রিয়া করা উচিত৷
সময়ের অক্ষর যা এই বাক্যটি শেষ করে।

· পড পার্সার, ত্রুটি রিপোর্ট করার সময়, আনুমানিক রিপোর্ট করার জন্য কিছু প্রচেষ্টা করা উচিত
লাইন নম্বর ("নেস্টেড ই<>'স অনুচ্ছেদ #52, Thing/Foo.pm এর লাইন 633 এর কাছাকাছি!"), পরিবর্তে
শুধুমাত্র অনুচ্ছেদ নম্বরটি লক্ষ্য করার জন্য ("নেস্টেড ই<> এর অনুচ্ছেদ #52 এর
জিনিস
অনুচ্ছেদ থেকে একটি উদ্ধৃতি সহ ("নেস্টেড ই<> এর অনুচ্ছেদ #52 এর
Thing/Foo.pm, যা শুরু হয় 'সি এর জন্য রিড/রাইট অ্যাকসেসর
বৈশিষ্ট্য...'")।

· পড পার্সাররা, যখন একের পর এক শব্দগুচ্ছ অনুচ্ছেদের একটি সিরিজ প্রক্রিয়াকরণ করা উচিত
সেগুলিকে একটি বড় শব্দচয়ন অনুচ্ছেদ হিসাবে বিবেচনা করুন যাতে ফাঁকা লাইন থাকে।
অর্থাৎ, এই দুটি লাইন, যার মধ্যে একটি ফাঁকা লাইন রয়েছে:

Foo ব্যবহার করুন;

প্রিন্ট Foo->সংস্করণ

আগে একটি অনুচ্ছেদে একীভূত করা উচিত ("\tuse Foo;\n\n\tপ্রিন্ট Foo->VERSION")
ফরম্যাটার বা অন্য প্রসেসরে পাঠানো হচ্ছে। পার্সাররাও একটি বিকল্পের অনুমতি দিতে পারে
এই ওভাররাইড করার জন্য।

যদিও এটি ইভেন্ট-ভিত্তিক পড পার্সারগুলিতে প্রয়োগ করা খুব কষ্টকর হতে পারে, এটি
পার্সার্স যারা পার্স ট্রি ফেরত দেয় তাদের জন্য সোজা।

· পড ফরম্যাটার, যেখানে সম্ভবপর, সংক্ষিপ্ত শব্দার্থে বিভক্ত না করার পরামর্শ দেওয়া হয়
পৃষ্ঠা জুড়ে অনুচ্ছেদ (বারো লাইনের নিচে, বলুন)।

· পড পার্সারদের অবশ্যই একটি লাইনকে শুধুমাত্র স্পেস এবং/অথবা ট্যাব সহ একটি "খালি লাইন" হিসাবে বিবেচনা করতে হবে
যেমন অনুচ্ছেদ আলাদা করে। (কিছু বয়স্ক পার্সার শুধুমাত্র দুটি সন্নিহিত চিনতে পেরেছে
একটি "ফাঁকা লাইন" হিসাবে একটি নতুন লাইন কিন্তু একটি নতুন লাইন, একটি স্থান এবং একটি নতুন লাইন চিনবে না,
একটি ফাঁকা লাইন হিসাবে। এটি অসঙ্গতিপূর্ণ আচরণ।)

· পড ফরম্যাটার/প্রসেসরের লেখকদের তাদের লেখা এড়াতে সর্বাত্মক প্রচেষ্টা করা উচিত
নিজস্ব পড পার্সার। ইন্টারফেসের বিস্তৃত পরিসর সহ CPAN-এ ইতিমধ্যেই বেশ কয়েকটি রয়েছে
শৈলী -- এবং তাদের মধ্যে একটি, Pod::Parser, পার্লের আধুনিক সংস্করণের সাথে আসে।

· পড নথিতে অক্ষরগুলি আক্ষরিক হিসাবে বা E-তে সংখ্যা দ্বারা প্রকাশ করা যেতে পারে
কোড, বা একটি সমতুল্য স্মারক দ্বারা, যেমন ই যা ঠিক সমতুল্য
ই<233>। সংখ্যাগুলি হল ল্যাটিন1/ইউনিকোড মান, এমনকি EBCDIC প্ল্যাটফর্মেও।

একটি ই ব্যবহার করে অক্ষর উল্লেখ করার সময় সাংখ্যিক কোড, 32-126 পরিসরের সংখ্যা
সেই সুপরিচিত US-ASCII অক্ষরগুলি দেখুন (এছাড়াও ইউনিকোড দ্বারা সংজ্ঞায়িত করা হয়েছে, এর সাথে
একই অর্থ), যা সমস্ত পড ফর্ম্যাটারকে অবশ্যই বিশ্বস্তভাবে রেন্ডার করতে হবে। অক্ষর যার E<>
সংখ্যাগুলি 0-31 এবং 127-159 রেঞ্জের মধ্যে ব্যবহার করা উচিত নয় (আক্ষরিক হিসাবেও নয়,
বা ই হিসাবেও নয় কোড), নিউলাইনের জন্য আক্ষরিক বাইট-সিকোয়েন্স ব্যতীত (ASCII 13,
ASCII 13 10, বা ASCII 10), এবং ট্যাব (ASCII 9)।

160-255 পরিসরের সংখ্যাগুলি ল্যাটিন-1 অক্ষরকে নির্দেশ করে (এটি দ্বারাও সংজ্ঞায়িত করা হয়েছে
ইউনিকোড, একই অর্থ সহ)। 255 এর উপরে নম্বরগুলি বোঝাতে হবে
ইউনিকোড অক্ষর।

সতর্ক করা উচিত যে কিছু ফরম্যাটার 32-126 এর বাইরে অক্ষরগুলিকে নির্ভরযোগ্যভাবে রেন্ডার করতে পারে না; এবং
অনেকেই 32-126 এবং 160-255 পরিচালনা করতে সক্ষম, কিন্তু 255 এর উপরে কিছুই নেই।

· সুপরিচিত "ই " এবং "ই " কম-এর চেয়ে এবং বড়-এর জন্য কোড, পড৷
পার্সারদের অবশ্যই বুঝতে হবে "ই "এর জন্য "/" (সলিডাস, স্ল্যাশ), এবং "ই "এর জন্য" |"
(উল্লম্ব বার, পাইপ)। পড পার্সারদেরও বোঝা উচিত "ই " এবং
"ই " 171 এবং 187 অক্ষরের জন্য লিগ্যাসি কোড হিসাবে, অর্থাৎ, "বাম-পয়েন্টিং ডবল
কোণ উদ্ধৃতি চিহ্ন" = "বাম নির্দেশক গিলিমেট" এবং "ডান-পয়েন্টিং ডবল কোণ
উদ্ধৃতি চিহ্ন" = "ডান নির্দেশক গিলিমেট"। (এগুলি দেখতে ছোট "<<" এবং ">>",
এবং সেগুলি এখন HTML/XHTML কোড দিয়ে প্রকাশ করা হয় "E " এবং
"ই "।)

· পড পার্সারদের সব বোঝা উচিত "E সত্তায় সংজ্ঞায়িত কোডগুলি
"www.W3.org"-এ সাম্প্রতিকতম XHTML স্পেসিফিকেশনে ঘোষণা। পড পার্সার্স অবশ্যই
160-255 পরিসরে অক্ষর সংজ্ঞায়িত করে এমন অন্তত সত্তাগুলিকে বুঝুন
(ল্যাটিন-1)। পড পার্সার, যখন কিছু অজানা "ইআইডেন্টিফায়ার>" কোড, উচিত নয়
শুধুমাত্র nullstring দিয়ে এটি প্রতিস্থাপন করুন (ডিফল্টভাবে, অন্তত), কিন্তু এটি একটি হিসাবে পাস করতে পারে
আক্ষরিক অক্ষর E সমন্বিত স্ট্রিং, এর চেয়ে কম, আইডেন্টিফায়ার, অপেক্ষা বৃহত্তর.
অথবা পড পার্সাররা এই ধরনের অজানা প্রক্রিয়াকরণের বিকল্প বিকল্প অফার করতে পারে
"ইআইডেন্টিফায়ার>" বিশেষ করে এই ধরনের কোডের জন্য একটি ইভেন্ট ফায়ার করে, অথবা একটি যোগ করে কোড
ইন-মেমরি ডকুমেন্ট ট্রিতে বিশেষ নোড-টাইপ। যেমন "ইআইডেন্টিফায়ার>" থাকতে পারে
কিছু প্রসেসরের জন্য বিশেষ অর্থ, বা কিছু প্রসেসর এগুলিকে যুক্ত করতে বেছে নিতে পারে
বিশেষ ত্রুটি রিপোর্ট।

· পড পার্সারদের অবশ্যই XHTML কোড সমর্থন করতে হবে "E " অক্ষর 34 এর জন্য (ডবল উদ্ধৃতি,
"), "ই " 38 অক্ষরের জন্য (অ্যাম্পারস্যান্ড, &), এবং "E 39 অক্ষরের জন্য
(অ্যাপোস্ট্রফি, ')।

· মনে রাখবেন যে সমস্ত ক্ষেত্রে "E ", যাই হোক (একটি html নাম, বা একটি সংখ্যা
যেকোন বেস) শুধুমাত্র বর্ণানুক্রমিক অক্ষর নিয়ে গঠিত হতে হবে -- অর্থাৎ, যাই হোক অবশ্যই দেখুন
"m/\A\w+\z/"। সুতরাং "E< 0 1 2 3 >" অবৈধ, কারণ এতে স্পেস রয়েছে, যা নয়
আলফানিউমেরিক অক্ষর। এই সম্ভবত না প্রয়োজন একটি পড দ্বারা বিশেষ চিকিত্সা
প্রসেসর; " 0 1 2 3 " কোনো বেসে একটি সংখ্যার মতো দেখায় না, তাই এটি সম্ভবত হবে
এইচটিএমএল-এর মতো নামের টেবিলে দেখা যাবে। যেহেতু সেখানে নেই (এবং হতে পারে না) একটি
" 0 1 2 3 " নামক HTML-এর মতো সত্তা, এটি একটি ত্রুটি হিসাবে বিবেচিত হবে৷ যাইহোক, পড
প্রসেসর "E< 0 1 2 3 >" বা "E" ব্যবহার করতে পারে " হিসাবে সিনট্যাক্টিক্যালি অবৈধ,
সম্ভাব্য ত্রুটি বার্তা (বা সতর্কীকরণ, বা
ঘটনা) একটি নিছক অজানা (কিন্তু তাত্ত্বিকভাবে বৈধ) htmlনাম দ্বারা উত্পন্ন, যেমন
"ই " [sic]। যাইহোক, পড পার্সারদের এই পার্থক্য করার প্রয়োজন নেই।

· উল্লেখ্য যে ই অবশ্যই না সহজভাবে "কোডপয়েন্ট" হিসাবে ব্যাখ্যা করা হবে সংখ্যা মধ্যে
বর্তমান/নেটিভ ক্যারেক্টার সেট। এর মানে সবসময় শুধুমাত্র "এর দ্বারা প্রতিনিধিত্ব করা অক্ষর
কোডপয়েন্ট সংখ্যা ইউনিকোডে।" (এটি &# এর শব্দার্থবিদ্যার সাথে অভিন্নসংখ্যা; মধ্যে
এক্সএমএল।)

এর জন্য সম্ভবত চিকিত্সাযোগ্য ইউনিকোড থেকে টেবিল ম্যাপিং করার জন্য অনেক ফর্ম্যাটারের প্রয়োজন হবে
কোডপয়েন্ট (যেমন ই-তীব্র অক্ষরের জন্য "\xE9") এস্কেপ সিকোয়েন্সে বা
টার্গেট আউটপুট ফরম্যাটে এই ধরনের সিকোয়েন্স প্রকাশ করার জন্য প্রয়োজনীয় কোড। একটি রূপান্তরকারী
to *roff, উদাহরণস্বরূপ জানতে হবে যে "\xE9" (আক্ষরিকভাবে বোঝানো হোক বা একটি মাধ্যমে
E<...> ক্রম) "e\\*'" হিসাবে বোঝাতে হবে। একইভাবে, একটি প্রোগ্রাম রেন্ডারিং পড ইন
একটি Mac OS অ্যাপ্লিকেশন উইন্ডো, সম্ভবত জানতে হবে যে "\xE9" এর মানচিত্র
MacRoman এনকোডিং-এ কোডপয়েন্ট 142 যা (লেখার সময়) ম্যাক ওএসের জন্য নেটিভ।
এই ধরনের Unicode2 যাই হোক না কেন ম্যাপিং সম্ভবত ইতিমধ্যেই সাধারণের জন্য ব্যাপকভাবে উপলব্ধ
আউটপুট ফরম্যাট। (এই ধরনের ম্যাপিং অসম্পূর্ণ হতে পারে! বাস্তবায়নকারীরা আশা করেন না
চেরোকি সিলেবিক্স, এট্রুস্কান রুনস রেন্ডার করার প্রয়াসে পিছনের দিকে বাঁকানো
বাইজেন্টাইন বাদ্যযন্ত্রের প্রতীক, বা অন্য কোন অদ্ভুত জিনিস যা ইউনিকোড এনকোড করতে পারে।)
এবং যদি একটি পড ডকুমেন্ট এমন একটি অক্ষর ব্যবহার করে যা এই ধরনের ম্যাপিংয়ে পাওয়া যায় না, ফর্ম্যাটার
এটি একটি অপ্রতিরোধ্য চরিত্র বিবেচনা করা উচিত.

· যদি, আশ্চর্যজনকভাবে, একটি পড ফর্ম্যাটার বাস্তবায়নকারী একটি সন্তোষজনক প্রাক-
বিদ্যমান টেবিল ম্যাপিং ইউনিকোড অক্ষর থেকে লক্ষ্য বিন্যাসে পালানোর জন্য (যেমন,
ইউনিকোড অক্ষরগুলির একটি শালীন টেবিল *রফ এস্কেপস), এটি তৈরি করা প্রয়োজন হবে
যেমন একটি টেবিল। আপনি যদি এই পরিস্থিতিতে থাকেন তবে আপনার চরিত্রগুলি দিয়ে শুরু করা উচিত
0x00A0 - 0x00FF পরিসরে, যা বেশিরভাগই ব্যবহৃত উচ্চারিত অক্ষর।
তারপরে অক্ষরের মাধ্যমে এগিয়ে যান (ধৈর্যের অনুমতি দেয় এবং অবিশ্বাস্যতা বাধ্য করে)
যে (এক্স)এইচটিএমএল স্ট্যান্ডার্ড গ্রুপগুলি স্মৃতিবিদ্যার জন্য যথেষ্ট গুরুত্বপূর্ণ।
এগুলো www.W3.org সাইটে (X)HTML স্পেসিফিকেশনে ঘোষণা করা হয়েছে। এর সময়ে
লেখা (সেপ্টেম্বর 2001), সবচেয়ে সাম্প্রতিক সত্তা ঘোষণা ফাইলগুলি হল:

http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent

তারপর আপনি পরিসরে অবশিষ্ট যেকোন উল্লেখযোগ্য ইউনিকোড অক্ষরের মাধ্যমে অগ্রগতি করতে পারেন
0x2000-0x204D (www.unicode.org-এ অক্ষর টেবিলের সাথে পরামর্শ করুন), এবং অন্য কিছু
আপনার অভিনব আঘাত. উদাহরণস্বরূপ, মধ্যে xhtml-symbol.ent, এন্ট্রি আছে:



"\x{221E}" অক্ষরে "ইনফিন" ম্যাপ করার সময় (আশা করা যায়)
ইতিমধ্যে পড পার্সার দ্বারা পরিচালিত, এই ফাইলে অক্ষরের উপস্থিতি মানে
যেটি থেকে মানচিত্র তৈরি করা একটি ফরম্যাটারের টেবিলে অন্তর্ভুক্ত করা যথেষ্ট গুরুত্বপূর্ণ
তাদের রেন্ডার করার জন্য প্রয়োজনীয় কোডগুলিতে উল্লেখযোগ্য ইউনিকোড অক্ষর। তাই একটি জন্য
ইউনিকোড-টু-*রফ ম্যাপিং, উদাহরণস্বরূপ, এটি এন্ট্রির যোগ্য হবে:

"\x{221E}" => '\(in',

এটি সাগ্রহে আশা করা যায় যে ভবিষ্যতে, ক্রমবর্ধমান সংখ্যক বিন্যাস (এবং বিন্যাস)
ইউনিকোড অক্ষর সরাসরি সমর্থন করবে (যেমন (X)HTML "∞", "∞" এর সাথে করে,
বা "∞"), ইউনিকোড-টু-এর আইডিওসিঙ্ক্রাটিক ম্যাপিংয়ের প্রয়োজনীয়তা হ্রাস করেআমার_পালানো.

· এটি একটি পৃথক পড ফরম্যাটারের উপর নির্ভর করে যে কোন ব্যক্তির সাথে মুখোমুখি হলে ভাল বিচার প্রদর্শন করা
অনুপস্থিত অক্ষর (যা একটি অজানা E থেকে আলাদা অনুক্রম যে
পার্সার কিছু সমাধান করতে পারেনি, রেন্ডারযোগ্য বা না)। মানচিত্র করা ভালো অভ্যাস
ডায়াক্রিটিক সহ ল্যাটিন অক্ষর (যেমন "E "/"E<233>") অনুরূপ
উচ্চারণবিহীন US-ASCII অক্ষর (যেমন একটি সাধারণ অক্ষর 101, "e"), কিন্তু স্পষ্টতই এটি
প্রায়শই সম্ভব হয় না, এবং একটি অনুপস্থিত অক্ষর "?", বা হিসাবে উপস্থাপিত হতে পারে
পছন্দ একটি বুদ্ধিমান ফলব্যাক করার চেষ্টা করার সময় (E<233> থেকে "e" পর্যন্ত), পড ফর্ম্যাটারগুলি ব্যবহার করতে পারে
Pod::Escapes, অথবা Text::Unidecode-এ %Latin1Code_to_fallback টেবিল, যদি পাওয়া যায়।

উদাহরণস্বরূপ, এই পড পাঠ্য:

আপনি যদি C<$Currency> কে 'E' তে সেট করেন তাহলে ম্যাজিক সক্রিয় হয় '

এইভাবে রেন্ডার করা যেতে পারে: "জাদু সক্ষম হয় যদি আপনি $Currency সেট করেন '?'" বা হিসাবে "জাদু হয়
আপনি $Currency সেট করলে সক্ষম[ইউরো]'", অথবা "আপনি সেট করলে ম্যাজিক সক্ষম হয়
$Currency থেকে '[x20AC]', ইত্যাদি

একটি পড ফরম্যাটারও নোট করতে পারে, একটি মন্তব্য বা সতর্কীকরণে, যা রেন্ডার করা যায় না তার একটি তালিকা
অক্ষর সম্মুখীন হয়েছে.

· E<...> যেকোন ফরম্যাটিং কোডে অবাধে প্রদর্শিত হতে পারে (অন্য E<...> বা একটিতে
Z<>)। অর্থাৎ, "এক্স 1,000,000 সমাধান>" বৈধ, যেমন "L
ই 1,000,000 সমাধান|মিলিয়ন::ইউরো>"।

· কিছু পড ফরম্যাট ফরম্যাটে আউটপুট দেয় যা নন-ব্রেকিং স্পেসকে একটি হিসাবে প্রয়োগ করে
স্বতন্ত্র অক্ষর (যাকে আমি "NBSP" বলব), এবং অন্যরা আউটপুট ফর্ম্যাট করে
নন-ব্রেকিং স্পেসগুলি প্রয়োগ করুন ঠিক যেমন স্পেসগুলি একটি "এটিকে ভেঙে ফেলবেন না
লাইন" কোড। মনে রাখবেন যে পডের স্তরে, উভয় ধরণের কোডই ঘটতে পারে: পড করতে পারে
একটি এনবিএসপি অক্ষর রয়েছে (আক্ষরিক হিসাবে হোক বা "E<160>" বা "E) "কোড);
এবং পডে "S" থাকতে পারে baz>" কোড, যেখানে "শুধু স্পেস" (অক্ষর 32) ইন
এই ধরনের কোডগুলি অ-ব্রেকিং স্পেসগুলিকে উপস্থাপন করার জন্য নেওয়া হয়। পড পার্সারদের বিবেচনা করা উচিত
"S এর ঐচ্ছিক পার্সিং সমর্থন করে baz>" যেন ছিল
"ফুএনবিএসপিআমিএনবিএসপিbaz", এবং, অন্যভাবে, এর গোষ্ঠীগুলির ঐচ্ছিক পার্সিং
NBSP-এর দ্বারা যুক্ত হওয়া শব্দগুলি যেন প্রতিটি গ্রুপ একটি S<...> কোডে থাকে, যাতে ফরম্যাটারগুলি হতে পারে
আউটপুট বিন্যাস যা দাবি করে তার সাথে মানচিত্রটি সবচেয়ে ভালভাবে উপস্থাপন করুন।

· কিছু প্রসেসর খুঁজে পেতে পারে যে "S<...>" কোডটি প্রতিস্থাপনের মাধ্যমে প্রয়োগ করা সবচেয়ে সহজ
একটি NBSP সহ S এর বিষয়বস্তুর নীচে পার্স ট্রির প্রতিটি স্থান। কিন্তু নোট: the
প্রতিস্থাপন প্রয়োগ করা উচিত না শূন্যস্থানে সব পাঠ্য, কিন্তু কেবল শূন্যস্থানে মুদ্রণযোগ্য
পাঠ্য (এই পার্থক্য নির্দিষ্ট গাছ/ইভেন্ট মডেলে স্পষ্ট হতে পারে বা নাও হতে পারে
পড পার্সার দ্বারা বাস্তবায়িত।) উদাহরণস্বরূপ, এই অস্বাভাবিক ক্ষেত্রে বিবেচনা করুন:

এস >

এর মানে হল যে দৃশ্যমান লিঙ্ক পাঠ্যের মাঝখানে স্থানটি ভাঙ্গা উচিত নয়
লাইন জুড়ে অন্য কথায়, এটি এর মতোই:

L<"অটোলোডেডE<160>ফাংশন"/অটোলোডেড ফাংশন>

যাইহোক, একটি ভুল প্রয়োগ করা স্থান থেকে NBSP প্রতিস্থাপন (ভুলভাবে) কিছু তৈরি করতে পারে
এর সমতুল্য:

L<"AutoloadedE<160>Functions"/AutoloadedE<160>Functions>

...যা প্রায় নিশ্চিতভাবে একটি হাইপারলিঙ্ক হিসাবে কাজ করতে যাচ্ছে না (এটি অনুমান করে
ফরম্যাটার হাইপারটেক্সট সমর্থনকারী একটি ফর্ম্যাট আউটপুট করে)।

ফরম্যাটাররা এস ফরম্যাট কোডকে সমর্থন না করা বেছে নিতে পারে, বিশেষ করে এমন ক্ষেত্রে যেখানে
আউটপুট ফরম্যাটে কেবল কোন NBSP অক্ষর/কোড নেই এবং "এটি ভাঙবেন না" এর জন্য কোন কোড নেই
লাইন জুড়ে স্টাফ"

উপরে আলোচিত NBSP চরিত্রের পাশাপাশি, বাস্তবায়নকারীদের অস্তিত্বের কথা মনে করিয়ে দেওয়া হয়
ল্যাটিন-১-এর অন্যান্য "বিশেষ" অক্ষরের মধ্যে, "নরম হাইফেন" অক্ষরটিও পরিচিত
"বিবেচনামূলক হাইফেন" হিসাবে, যেমন "E<173>" = "E<0xAD>" = "E ") এই চরিত্র
একটি ঐচ্ছিক হাইফেনেশন পয়েন্ট প্রকাশ করে। যে, এটা সাধারণত কিছুই হিসাবে রেন্ডার, কিন্তু
একটি "-" হিসাবে রেন্ডার হতে পারে যদি একটি ফরম্যাটার সেই সময়ে শব্দটি ভাঙে। পড ফরম্যাটার
উপযুক্ত হিসাবে, নিম্নলিখিতগুলির মধ্যে একটি করা উচিত: 1) এর সাথে একটি কোড সহ এটি রেন্ডার করুন
একই অর্থ (যেমন, RTF-তে "\-"), 2) এই প্রত্যাশায় এটি পাস করুন যে
ফরম্যাটার এই অক্ষরটিকে যেমন বোঝে, বা 3) এটি মুছুন।

উদাহরণ স্বরূপ:

sigE কর্ম
manuE লিপি
জার্কই ko HieE taE nieE মাই

এগুলি একটি ফর্ম্যাটারকে সংকেত দেয় যে যদি এটি "সিগ্যাকশন" বা "পান্ডুলিপি" হাইফেনেট করতে হয়,
তারপর এটি করা উচিত "চিহ্ন-[লাইন বিরতি]কর্ম" বা "মানু-[লাইন বিরতি]স্ক্রিপ্ট" (এবং যদি
এটি হাইফেনেট করে না, তারপর "ই " মোটেও দেখায় না) এবং যদি তা হয়
হাইফেনেট "Jarkko" এবং/অথবা "Hietaniemi", এটি শুধুমাত্র সেই পয়েন্টে করতে পারে যেখানে আছে
একটি "ই "কোড।

অনুশীলনে, এটা প্রত্যাশিত যে এই অক্ষর প্রায়ই ব্যবহার করা হবে না, কিন্তু
ফরম্যাটারদের হয় এটি সমর্থন করা উচিত, অথবা এটি মুছে ফেলা উচিত।

· আপনি যদি মনে করেন যে আপনি পডে একটি নতুন কমান্ড যোগ করতে চান (যেমন, বলুন, a "=biblio"
কমান্ড), আপনি একটি for বা শুরু/শেষ দিয়ে একই প্রভাব পেতে পারেন কিনা তা বিবেচনা করুন
ক্রম: "=বিবলিওর জন্য ..." বা "=বিবলিওর শুরু" ... "=শেষ গ্রন্থ"। পড প্রসেসর যে
বুঝতে পারছেন না "=বিবলিওর জন্য", ইত্যাদি, এটিকে উপেক্ষা করবে, যেখানে তারা অভিযোগ করতে পারে
উচ্চস্বরে যদি তারা "=বিবলিও" দেখতে পায়।

· এই নথি জুড়ে, "Pod" এর নামের জন্য পছন্দের বানান হয়েছে
ডকুমেন্টেশন বিন্যাস। কেউ "পিওডি" বা "পড" ব্যবহার করতে পারে। ডকুমেন্টেশন জন্য যে
(সাধারণত) পড ফরম্যাটে, আপনি "পড", বা "পড", বা "পিওডি" ব্যবহার করতে পারেন। বোঝাপড়া
এই পার্থক্য দরকারী; কিন্তু তাদের বানান কিভাবে উপর obsessing, সাধারণত হয় না.

সম্পর্কে এল<...> কোড


আপনি পার্লপডের এক নজর থেকে বলতে পারেন, L<...> কোডটি পডের সবচেয়ে জটিল
ফরম্যাটিং কোড। নীচের পয়েন্টগুলি আশা করি এর অর্থ কী এবং কীভাবে তা স্পষ্ট করবে
প্রসেসরদের এটি মোকাবেলা করা উচিত।

একটি L<...> কোড পার্স করার সময়, পড পার্সারদের অবশ্যই অন্তত চারটি বৈশিষ্ট্যের পার্থক্য করতে হবে:

প্রথম:
লিঙ্ক-টেক্সট। যদি কোনটি না থাকে তবে এটি অবশ্যই "undef" হতে হবে। (যেমন, "এল
ফাংশন|perlfunc>", লিঙ্ক-টেক্সট হল "পার্ল ফাংশন"। "L " এবং
এমনকি "L<|Time::HiRes>", কোন লিঙ্ক টেক্সট নেই। উল্লেখ্য যে লিঙ্ক টেক্সট থাকতে পারে
বিন্যাস।)

দ্বিতীয়ত:
সম্ভবত অনুমান করা লিঙ্ক-টেক্সট; অর্থাৎ, যদি কোন বাস্তব লিঙ্ক টেক্সট না ছিল, তাহলে এই
আমরা তার জায়গায় অনুমান করব যে টেক্সট. (যেমন, "এল ", দ্য
অনুমিত লিঙ্ক পাঠ্য হল "Getopt::Std"।)

তৃতীয়:
নাম বা URL, অথবা "undef" না থাকলে। (যেমন, "এল ", দ্য
নাম (কখনও কখনও পৃষ্ঠাও বলা হয়) হল "perlfunc"। "এল ", নাম
হল "undef"।)

চতুর্থ:
বিভাগটি (পুরনো পার্লপডগুলিতে AKA "আইটেম"), অথবা "undef" যদি না থাকে। যেমন, ইন
"এল ", "DESCRIPTION" হল বিভাগ। (উল্লেখ্য যে এটি
"man 5 crontab"-এ "5" এর মতো একটি ম্যানপেজ বিভাগের মতো নয়৷ "বিভাগ ফু"
পড অর্থে শিরোনাম দ্বারা প্রবর্তিত পাঠ্যের অংশকে বোঝায় বা
আইটেম যার পাঠ্য "Foo"।)

পড পার্সাররা অতিরিক্ত বৈশিষ্ট্যগুলিও নোট করতে পারে যার মধ্যে রয়েছে:

পঞ্চম:
আইটেম 3 (যদি উপস্থিত থাকে) একটি URL কিনা তার জন্য একটি পতাকা (যেমন "http://lists.perl.org" হয়),
যে ক্ষেত্রে কোন বিভাগ বৈশিষ্ট্য থাকা উচিত নয়; একটি পড নাম (যেমন "perldoc" এবং
"Getopt::Std" হল); অথবা সম্ভবত একটি ম্যান পৃষ্ঠার নাম (যেমন "নিম্নলিখিতরূপে crontab পরিবর্তন(5)" হয়)।

ষষ্ঠ:
কাঁচা আসল L<...> বিষয়বস্তু, পাঠ্যকে "|", "/" ইত্যাদিতে বিভক্ত করার আগে এবং আগে
ই<...> কোডগুলি প্রসারিত হয়।

(উপরে শুধুমাত্র নীচের সংক্ষিপ্ত রেফারেন্সের জন্য নম্বর দেওয়া হয়েছে। এটি একটি প্রয়োজনীয়তা নয়
যে এগুলি একটি প্রকৃত তালিকা বা অ্যারে হিসাবে পাস করা হবে।)

উদাহরণ স্বরূপ:

এল
=> undef, # লিঙ্ক পাঠ্য
"Foo::বার", # সম্ভবত অনুমান করা লিঙ্ক পাঠ্য
"Foo::বার", # নাম
undef, # বিভাগ
'পড', # কি ধরনের লিঙ্ক
"Foo::বার" # মূল বিষয়বস্তু

এল
=> "NL এর উপর পার্লপোর্টের বিভাগ", # লিঙ্ক পাঠ্য
"NL এর উপর পার্লপোর্টের বিভাগ", # সম্ভবত অনুমান করা লিঙ্ক পাঠ্য
"perlport", # নাম
"নতুন লাইন", # বিভাগ
'পড', # কি ধরনের লিঙ্ক
"NL's|perlport/Newlines-এ পার্লপোর্টের বিভাগ"
#টি আসল কন্টেন্ট

এল
=> undef, # লিঙ্ক পাঠ্য
'"Newlines" in perlport', # সম্ভবত অনুমান করা লিঙ্ক পাঠ্য
"perlport", # নাম
"নতুন লাইন", # বিভাগ
'পড', # কি ধরনের লিঙ্ক
"perlport/Newlines" # মূল বিষয়বস্তু

L<নিম্নলিখিতরূপে crontab পরিবর্তন(5)/"ডেসক্রিপশন">
=> undef, # লিঙ্ক পাঠ্য
"DESCRIPTION" ইন নিম্নলিখিতরূপে crontab পরিবর্তন(5)', # সম্ভবত অনুমান করা লিঙ্ক পাঠ্য
"নিম্নলিখিতরূপে crontab পরিবর্তন(5)", # নাম
"DESCRIPTION", # বিভাগ
'মানুষ', # কি ধরনের লিঙ্ক
'নিম্নলিখিতরূপে crontab পরিবর্তন(5)/"DESCRIPTION"' # মূল বিষয়বস্তু

এল
=> undef, # লিঙ্ক পাঠ্য
'"অবজেক্ট অ্যাট্রিবিউটস"', # সম্ভবত অনুমান করা লিঙ্ক টেক্সট
undef, # নাম
"বস্তু বৈশিষ্ট্য", # বিভাগ
'পড', # কি ধরনের লিঙ্ক
"/অবজেক্ট অ্যাট্রিবিউটস" # আসল কন্টেন্ট

L<http://www.perl.org/>
=> undef, # লিঙ্ক পাঠ্য
"http://www.perl.org/", # সম্ভবত অনুমান করা লিঙ্ক পাঠ্য
"http://www.perl.org/", # নাম
undef, # বিভাগ
'url', # কি ধরনের লিঙ্ক
"http://www.perl.org/"# আসল কন্টেন্ট

এলhttp://www.perl.org/>
=> "Perl.org", # লিঙ্ক পাঠ্য
"http://www.perl.org/", # সম্ভবত অনুমান করা লিঙ্ক পাঠ্য
"http://www.perl.org/", # নাম
undef, # বিভাগ
'url', # কি ধরনের লিঙ্ক
"Perl.org|http://www.perl.org/"# আসল কন্টেন্ট

মনে রাখবেন যে আপনি URL-লিঙ্কগুলিকে অন্য যেকোন কিছু থেকে আলাদা করতে পারেন যে তারা মিলছে
"m/\A\w+:[^:\s]\S*\z/"। তাই "এলhttp://www.perl.com>" একটি URL, কিন্তু "L "
হয় না

L<...> কোডের ক্ষেত্রে কোন "টেক্সট|" নেই তাদের মধ্যে অংশ, পুরোনো ফরম্যাটারগুলি প্রদর্শিত হয়েছে
প্রকৃতপক্ষে লিঙ্ক বা ক্রস রেফারেন্স প্রদর্শনে মহান বৈচিত্র্য. উদাহরণ স্বরূপ,
L<নিম্নলিখিতরূপে crontab পরিবর্তন(5)> "the নিম্নলিখিতরূপে crontab পরিবর্তন(5) ম্যানপেজ", বা "এ নিম্নলিখিতরূপে crontab পরিবর্তন(5) ম্যানপেজ"
বা শুধু "নিম্নলিখিতরূপে crontab পরিবর্তন(5) "।

পড প্রসেসরদের এখন অবশ্যই "টেক্সট|"-কম লিঙ্কগুলিকে নিম্নরূপ ব্যবহার করতে হবে:

এল => এল
এল => L<"বিভাগ"|/বিভাগ>
এল => L<"section" in name|name/section>

· মনে রাখবেন যে বিভাগের নামগুলিতে মার্কআপ থাকতে পারে। অর্থাৎ, যদি একটি বিভাগ দিয়ে শুরু হয়:

=head2 C<-M> অপারেটর সম্পর্কে

অথবা সঙ্গে:

= আইটেম C<-M> অপারেটর সম্পর্কে

তারপর এটির একটি লিঙ্ক এই মত দেখাবে:

এল অপারেটর >

ফরম্যাটাররা লিঙ্কটি সমাধান এবং ব্যবহারের উদ্দেশ্যে মার্কআপ উপেক্ষা করতে পারে
বিভাগের নামে শুধুমাত্র রেন্ডারযোগ্য অক্ষর, যেমন:

সম্পর্কে -M
অপারেটর

...

সম্পর্কে -M
অপারেটর" somedoc এ

· পার্লপডের পূর্ববর্তী সংস্করণগুলি বিশিষ্ট "এল " থেকে লিঙ্ক
"এল " লিঙ্কগুলি (এবং তাদের লক্ষ্য)। এগুলিকে সিনট্যাক্টিকভাবে একত্রিত করা হয়েছে এবং
বর্তমান স্পেসিফিকেশনে শব্দার্থগতভাবে, এবং অধ্যায় হয় একটি "= হেড উল্লেখ করতে পারেনn
শিরোনাম বিষয়বস্তু" কমান্ড বা একটি "= আইটেম বিষয়বস্তু" কমান্ড। এই স্পেসিফিকেশন
প্রদত্ত নথি থাকার ক্ষেত্রে কী আচরণ করা উচিত তা নির্দিষ্ট করে না
কিছু জিনিস সব একই উত্পাদন বলে মনে হচ্ছে অধ্যায় শনাক্তকারী (যেমন, HTML এ,
কিছু জিনিস সব একই উত্পাদন অ্যাঙ্করনেম ভিতরেঅ্যাঙ্করনেম">...
উপাদান)। যেখানে পড প্রসেসর এই আচরণ নিয়ন্ত্রণ করতে পারে, তাদের প্রথমে ব্যবহার করা উচিত
যেমন নোঙ্গর অর্থাৎ, "এল " কোনো কিছু নির্দেশ করে প্রথম Foo-তে "বার" বিভাগ।

কিন্তু কিছু প্রসেসর/ফরম্যাটের জন্য এটা সহজে নিয়ন্ত্রণ করা যায় না; HTML এর মতো
উদাহরণ, একাধিক অস্পষ্ট আচরণঅ্যাঙ্করনেম">... সবচেয়ে বেশি
সহজেই সিদ্ধান্ত নিতে ব্রাউজারদের উপর ছেড়ে দেওয়া হয়।

· একটি "এল " কোড, টেক্সটে ফরম্যাটিং বা ফরম্যাটিং কোড থাকতে পারে
E<...> পালিয়ে যায়, যেমন:

এল জিনিসপত্র>|...>

একটি "নাম|" ছাড়া "L<...>" কোডগুলির জন্য অংশ, শুধুমাত্র "E<...>" এবং "Z<>" কোড ঘটতে পারে।
অর্থাৎ, লেখকদের ""L ব্যবহার করা উচিত নয় >""।

উল্লেখ্য, তবে, ফরম্যাটিং কোড এবং Z<>'s একটি এর যেকোনো এবং সমস্ত অংশে ঘটতে পারে
L<...> (অর্থাৎ, মধ্যে নাম, অধ্যায়, পাঠ, এবং URL).

লেখকরা অবশ্যই L<...> কোড নেস্ট করবেন না। উদাহরণস্বরূপ, "এল man page>" উচিত
একটি ত্রুটি হিসাবে বিবেচিত হবে।

· মনে রাখবেন যে পড লেখকরা "টেক্সট" অংশের মধ্যে বিন্যাস কোড ব্যবহার করতে পারেন
"এল " (এবং তাই এল এর জন্য )

অন্য কথায়, এটি বৈধ:

এল পড়তে যান |perlvar/"$.">

কিছু আউটপুট ফরম্যাট যা হাইপারটেক্সট হিসাবে "L<...>" কোড রেন্ডার করার অনুমতি দেয়, নাও হতে পারে
লিঙ্ক-টেক্সট ফর্ম্যাট করার অনুমতি দিন; সেই ক্ষেত্রে, ফরম্যাটারগুলিকে উপেক্ষা করতে হবে
যে বিন্যাস.

লেখার সময়, "এল " মান দুটি প্রকার: হয় একটি পড পৃষ্ঠার নাম৷
যেমন "এল " (যা @INC / PATH-এ একটি বাস্তব পার্ল মডিউল বা প্রোগ্রাম হতে পারে
ডিরেক্টরি, বা ঐ জায়গাগুলিতে একটি .pod ফাইল); অথবা একটি ইউনিক্স ম্যান পেজের নাম, লাইক
"এলনিম্নলিখিতরূপে crontab পরিবর্তন(5)>।" তাত্ত্বিকভাবে, "এল " একটি পড পৃষ্ঠার মধ্যে অস্পষ্টভাবে বলা হয়৷
"chmod", বা ইউনিক্স ম্যান পেজ "chmod" (যাই হোক না কেন ম্যান-সেকশনে)। তবে
বন্ধনীতে একটি স্ট্রিংয়ের উপস্থিতি, যেমন "নিম্নলিখিতরূপে crontab পরিবর্তন(5)", সংকেত দিতে যথেষ্ট যে কি
আলোচনা করা হচ্ছে একটি পড পৃষ্ঠা নয়, এবং তাই সম্ভবত একটি ইউনিক্স ম্যান পৃষ্ঠা। দ্য
অনেক পড প্রসেসরের কাছে পার্থক্যের কোন গুরুত্ব নেই, কিন্তু কিছু প্রসেসরের জন্য
হাইপারটেক্সট ফরম্যাটে রেন্ডার কিভাবে করতে হয় তা জানার জন্য তাদের আলাদা করতে হবে
একটি প্রদত্ত "এল" রেন্ডার করুন "কোড।

পার্লপডের পূর্ববর্তী সংস্করণগুলি "এল " সিনট্যাক্স (যেমন "এল
গুণাবলী>"), যা "L" থেকে সহজে আলাদা করা যায় না সিনট্যাক্স এবং এর জন্য
"L<"section">" যা ছিল সামান্য কম অস্পষ্ট। এই সিনট্যাক্স আর নেই
স্পেসিফিকেশন, এবং "এল দ্বারা প্রতিস্থাপিত হয়েছে " সিনট্যাক্স (যেখানে স্ল্যাশ
পূর্বে ঐচ্ছিক ছিল)। পড পার্সারদের "L<"section">" সিনট্যাক্স সহ্য করা উচিত, a এর জন্য
অন্তত যখন পার্থক্য করার জন্য প্রস্তাবিত হিউরিস্টিক "এল "থেকে
"এল " যদি এটিতে কোনো হোয়াইটস্পেস থাকে তবে এটি একটি অধ্যায়. পড প্রসেসর
এই অবমূল্যায়ন বাক্য গঠন সম্পর্কে সতর্ক করা উচিত.

সম্পর্কে =ওভার...=পিছনে অঞ্চল


"=ওভার"..."=ব্যাক" অঞ্চলগুলি বিভিন্ন ধরণের তালিকার মতো কাঠামোর জন্য ব্যবহৃত হয়। (আমি ব্যবহার করি
এখানে "অঞ্চল" শব্দটি "=ওভার" থেকে শুরু করে সবকিছুর জন্য একটি সমষ্টিগত শব্দ হিসাবে
মিলে যাচ্ছে "=ব্যাক"।)

· অ-শূন্য সংখ্যাসূচক ইনডেন্টলেভেল ইন "=ওভার ইনডেন্টলেভেল"..." = back" এর জন্য ব্যবহৃত হয়
কতগুলি "স্পেস" (ইএমএস, বা মোটামুটি সমতুল্য একক) সম্পর্কে ফর্ম্যাটারটিকে একটি সংকেত দেওয়া
এটিকে ট্যাব করা উচিত, যদিও অনেক ফরম্যাটারকে এটিকে পরম রূপান্তর করতে হবে
পরিমাপ যা শূন্যস্থানের (বা M এর) আকারের সাথে ঠিক মেলে না
নথির ভিত্তি ফন্ট। অন্যান্য ফরম্যাটারদের সংখ্যাটিকে সম্পূর্ণ উপেক্ষা করতে হতে পারে। দ্য
কোনো সুস্পষ্ট অভাব ইনডেন্টলেভেল প্যারামিটার একটি এর সমতুল্য ইনডেন্টলেভেল 4 এর মান।
পড প্রসেসর অভিযোগ করতে পারে যদি ইনডেন্টলেভেল উপস্থিত কিন্তু একটি ধনাত্মক সংখ্যা নয়
মিলছে "m/\A(\d*\.)?\d+\z/"।

· পড ফরম্যাটার লেখকদের মনে করিয়ে দেওয়া হয় যে "=over" ... "=back" বেশ কয়েকটিতে ম্যাপ করতে পারে
আপনার আউটপুট বিন্যাসে বিভিন্ন নির্মাণ। উদাহরণস্বরূপ, Pod এ রূপান্তরিত করা
(এক্স)এইচটিএমএল, এটি যেকোনো একটিতে ম্যাপ করতে পারে ... , ... , ... , বা
... . একইভাবে, "= আইটেম" ম্যাপ করতে পারে বা .

· প্রতিটি "=ওভার" ... "=ব্যাক" অঞ্চল নিম্নলিখিতগুলির মধ্যে একটি হওয়া উচিত:

· একটি "=ওভার" ... "=ব্যাক" অঞ্চল যেখানে শুধুমাত্র "= আইটেম *" কমান্ড রয়েছে, প্রতিটি অনুসরণ করে
কিছু সংখ্যক সাধারণ/বাধ্যাত্মিক অনুচ্ছেদ, অন্যান্য নেস্টেড "=ওভার" ... "=ব্যাক"
অঞ্চল, "= জন্য..." অনুচ্ছেদ, এবং "= শুরু"..."=শেষ" অঞ্চল।

(পড প্রসেসরকে অবশ্যই একটি খালি "= আইটেম" সহ্য করতে হবে যেন এটি "= আইটেম *"।) কিনা
"*" একটি আক্ষরিক তারকাচিহ্ন হিসাবে, একটি "o", বা বাস্তব বুলেট হিসাবে রেন্ডার করা হয়
অক্ষর, পড ফর্ম্যাটার পর্যন্ত ছেড়ে দেওয়া হয়, এবং এর স্তরের উপর নির্ভর করতে পারে
বাসা বাঁধা

· একটি "=ওভার" ... "=ব্যাক" অঞ্চল যেখানে শুধুমাত্র "m/\A=item\s+\d+\.?\s*\z/" রয়েছে
অনুচ্ছেদ, প্রতিটি এক (বা তাদের প্রতিটি গ্রুপ) কিছু সংখ্যা দ্বারা অনুসরণ করা
সাধারণ/শব্দশৈলী অনুচ্ছেদ, অন্যান্য নেস্টেড "=ওভার" ... "=ব্যাক" অঞ্চল, "= জন্য..."
অনুচ্ছেদ, এবং/অথবা "=শুরু"..."=শেষ" কোড। মনে রাখবেন যে সংখ্যাগুলি অবশ্যই 1 থেকে শুরু হবে
প্রতিটি বিভাগে, এবং ক্রমানুসারে এবং নম্বর এড়িয়ে যেতে হবে।

(পড প্রসেসরকে অবশ্যই "= আইটেম 1" এর মতো লাইন সহ্য করতে হবে যেন তারা "= আইটেম 1"।
সময়ের সাথে।)

· একটি "=ওভার" ... "=ব্যাক" অঞ্চল যেখানে শুধুমাত্র "=আইটেম [টেক্সট]" কমান্ড রয়েছে, প্রতিটি
(অথবা তাদের প্রতিটি গোষ্ঠী) এর পরে কিছু সংখ্যক সাধারণ/বাধ্যাত্মিক অনুচ্ছেদ,
অন্যান্য নেস্টেড "=ওভার" ... "=ব্যাক" অঞ্চল, বা "= জন্য..." অনুচ্ছেদ, এবং
"=শুরু"..."=শেষ" অঞ্চল।

"=আইটেম [টেক্সট]" অনুচ্ছেদটি "m/\A=item\s+\d+\.?\s*\z/" বা মেলে না
"m/\A=item\s+\*\s*\z/", বা এটি শুধুমাত্র "m/\A=item\s*\z/" এর সাথে মেলে না।

· একটি "=ওভার" ... "=ব্যাক" অঞ্চল যাতে কোনো "= আইটেম" অনুচ্ছেদ নেই, এবং
শুধুমাত্র কিছু সংখ্যক সাধারণ/বাধ্যাত্মিক অনুচ্ছেদ রয়েছে, এবং সম্ভবত এটিও
কিছু নেস্টেড "=ওভার" ... "=ব্যাক" অঞ্চল, "= জন্য..." অনুচ্ছেদ, এবং
"=শুরু"..."=শেষ" অঞ্চল। পডের এমন একটি আইটেমবিহীন "=ওভার" ... "=ব্যাক" অঞ্চল
অর্থে একটি "এর সমতুল্য ... HTML এ উপাদান।

উল্লেখ্য যে উপরের সমস্ত ক্ষেত্রে, আপনি নির্ধারণ করতে পারেন কোন ধরনের "=over"...
"=ব্যাক" আপনার আছে, প্রথম (নন-"=কাট", নন-"=পড") পড অনুচ্ছেদ পরীক্ষণ করে
"=ওভার" কমান্ড।

· পড ফরম্যাটার অবশ্যই "= আইটেমে নির্বিচারে প্রচুর পরিমাণে পাঠ্য সহ্য করুন৷ পাঠ্য..."
অনুচ্ছেদ অনুশীলনে, বেশিরভাগ অনুচ্ছেদ ছোট, যেমন:

= বিশ্বের সমস্ত অংশের সাথে আমাদের বাণিজ্য বন্ধ করার জন্য আইটেম

কিন্তু তারা নির্বিচারে দীর্ঘ হতে পারে:

= আইটেম সমুদ্রের ওপারে আমাদের পরিবহনের জন্য ভান করার চেষ্টা করা হবে
অপরাধ

= আইটেম তিনি এই সময়ে বিদেশী বৃহৎ সৈন্যবাহিনী পরিবহন করছেন
ভাড়াটেদের মৃত্যু, জনশূন্যতা এবং কাজগুলো সম্পন্ন করার জন্য
অত্যাচার, নিষ্ঠুরতা এবং বেপরোয়া পরিস্থিতির সাথে ইতিমধ্যেই শুরু হয়েছে
সবচেয়ে বর্বর যুগে খুব কমই সমান্তরাল, এবং সম্পূর্ণরূপে
একটি সভ্য জাতির প্রধান অযোগ্য।

· পড প্রসেসর সহ্য করা উচিত "= আইটেম *" / "= আইটেম সংখ্যা"না সহ কমান্ড
সহগামী অনুচ্ছেদ। মাঝের আইটেমটি একটি উদাহরণ:

= বেশি

= আইটেম 1

ড্রাই ক্লিনিং নিন।

= আইটেম 2

= আইটেম 3

দোকানে থামুন। Abba Zabas, Stoli, এবং সস্তা লন চেয়ার পান.

= ফিরে

· কোন "=ওভার" ... "=ব্যাক" অঞ্চলে শিরোনাম থাকতে পারে না। প্রসেসর যেমন একটি আচরণ করতে পারে
একটি ত্রুটি হিসাবে শিরোনাম.

নোট করুন যে একটি "=ওভার" ... "=ব্যাক" অঞ্চলে কিছু বিষয়বস্তু থাকা উচিত। অর্থাৎ লেখক
এই মত একটি খালি অঞ্চল থাকা উচিত নয়:

= বেশি

= ফিরে

পড প্রসেসররা এমন একটি বিষয়বস্তুহীন "=ওভার" ... "=ব্যাক" অঞ্চল দেখে, এটি উপেক্ষা করতে পারে, অথবা
এটি একটি ত্রুটি হিসাবে রিপোর্ট করতে পারে।

· প্রসেসরদের অবশ্যই একটি "=ওভার" তালিকা সহ্য করতে হবে যা নথির শেষে চলে যায় (যেমন,
যার কোন মিল নেই "=back"), কিন্তু তারা এই ধরনের একটি তালিকা সম্পর্কে সতর্ক করতে পারে।

· পড ফর্ম্যাটার লেখকদের মনে রাখা উচিত যে এই গঠন:

= আইটেম নেক

= আইটেম পোরো

= আইটেম Quisquam আনুমানিক

Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non Numquam eius Modi tempora incidunt ut
শ্রম এবং ডোলোর ম্যাগনাম অ্যালিকুম কোয়ারাট ভোলুপ্টেটেম।

= আইটেম Ut Enim

শব্দার্থগতভাবে অস্পষ্ট, এমন একটি উপায় যা বিন্যাসের সিদ্ধান্তগুলিকে কিছুটা কঠিন করে তোলে।
একদিকে, এটি একটি আইটেম "নেক" এর উল্লেখ হতে পারে, অন্য একটি আইটেমের উল্লেখ
"Porro", এবং আরেকটি আইটেম "Quisquam Est" এর উল্লেখ, শুধুমাত্র শেষটি প্রয়োজন
ব্যাখ্যামূলক অনুচ্ছেদ "Qui dolorem ipsum quia dolor..."; এবং তারপর একটি আইটেম "Ut
এনিম। সেই ক্ষেত্রে, আপনি এটিকে এভাবে ফরম্যাট করতে চান:

নেক

porro

কুইস্কাম এস্ট
Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non Numquam eius Modi tempora incidunt ut
শ্রম এবং ডোলোর ম্যাগনাম অ্যালিকুম কোয়ারাট ভোলুপ্টেটেম।

Ut Enim

তবে এটি সমানভাবে তিনটি (সম্পর্কিত বা সমতুল্য) আইটেমের আলোচনা হতে পারে,
"Neque", "Porro", এবং "Quisquam Est", এর পরে একটি অনুচ্ছেদ তাদের সব ব্যাখ্যা করে, এবং
তারপর একটি নতুন আইটেম "Ut Enim"। সেই ক্ষেত্রে, আপনি সম্ভবত এটির মতো ফর্ম্যাট করতে চান:

নেক
porro
কুইস্কাম এস্ট
Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non Numquam eius Modi tempora incidunt ut
শ্রম এবং ডোলোর ম্যাগনাম অ্যালিকুম কোয়ারাট ভোলুপ্টেটেম।

Ut Enim

কিন্তু (অদূর ভবিষ্যতের জন্য), পড পড লেখকদের জন্য কোন উপায় প্রদান করে না
উপরের "= আইটেম" - ক্লাস্টার গঠন দ্বারা কোন গ্রুপিং বোঝানো হয়েছে তা আলাদা করুন। তাই
ফরম্যাটারদের এটির মতো ফর্ম্যাট করা উচিত:

নেক

porro

কুইস্কাম এস্ট

Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
velit, sed quia non Numquam eius Modi tempora incidunt ut
শ্রম এবং ডোলোর ম্যাগনাম অ্যালিকুম কোয়ারাট ভোলুপ্টেটেম।

Ut Enim

অর্থাৎ, আইটেমের মধ্যে (অন্তত মোটামুটিভাবে) সমান ব্যবধান থাকা উচিত
অনুচ্ছেদ (যদিও সেই ব্যবধানটি একটি লাইনের সম্পূর্ণ উচ্চতার চেয়ে কম হতে পারে
পাঠ্য)। এটি পাঠককে (প্রসঙ্গ) পাঠ্য সংকেত ব্যবহার করতে দেয় কিনা তা বের করতে
"Qui dolorem ipsum..." অনুচ্ছেদটি "Quisquam Est" আইটেম বা সকলের জন্য প্রযোজ্য
তিনটি আইটেম "Neque", "Porro", এবং "Quisquam Est"। যদিও একটি আদর্শ পরিস্থিতি নয়, এই
ফরম্যাটিং সংকেত প্রদানের জন্য পছন্দনীয় যা আসলে এর বিপরীত হতে পারে
লেখকের অভিপ্রায়।

সম্পর্কে উপাত্ত অনুচ্ছেদ এবং "=শুরু/=শেষ" অঞ্চল


ডেটা অনুচ্ছেদগুলি সাধারণত নন-পড ডেটা ইনলাইন করার জন্য ব্যবহৃত হয় যা ব্যবহার করা হয় (সাধারণত
একটি নির্দিষ্ট বিন্যাসে দস্তাবেজ রেন্ডার করার সময়:

= আরটিএফ শুরু করুন

\par{\pard\qr\sa4500{\i মুদ্রিত\~\chdate\~\chtime}\par}

= শেষ rtf

ঠিক একই প্রভাব, ঘটনাক্রমে, একটি একক "= জন্য" অনুচ্ছেদের মাধ্যমে অর্জন করা যেতে পারে:

= RTF \par{\pard\qr\sa4500{\i মুদ্রিত\~\chdate\~\chtime}\par} এর জন্য

(যদিও এটি আনুষ্ঠানিকভাবে একটি ডেটা অনুচ্ছেদ নয়, এটি একটি এবং পডের মতো একই অর্থ রয়েছে
বিশ্লেষকরা এটিকে এক হিসাবে বিশ্লেষণ করতে পারে।)

একটি ডেটা অনুচ্ছেদের আরেকটি উদাহরণ:

= html শুরু করুন

আমি PIE পছন্দ করি!

বিশেষ করে পেকান পাই!

= শেষ html

যদি এইগুলি সাধারণ অনুচ্ছেদ হয়, তাহলে পড পার্সার "E" প্রসারিত করার চেষ্টা করবে (
প্রথম অনুচ্ছেদ) একটি ফর্ম্যাটিং কোড হিসাবে, ঠিক যেমন "E "বা"ই কিন্তু এই থেকে
একটি "= শুরুতে আছে আইডেন্টিফায়ার"..." = শেষ আইডেন্টিফায়ার" অঞ্চল এবং শনাক্তকারী "html" করে না
শুরুতে একটি ":" উপসর্গ আছে, এই অঞ্চলের বিষয়বস্তু ডেটা অনুচ্ছেদ হিসাবে সংরক্ষণ করা হয়,
সাধারণ অনুচ্ছেদ হিসাবে প্রক্রিয়া করার পরিবর্তে (বা যদি তারা একটি স্পেস দিয়ে শুরু হয় এবং/অথবা
ট্যাব, শব্দার্থে অনুচ্ছেদ হিসাবে)।

আরও উদাহরণ হিসাবে: লেখার সময়, কোনও "বিবলিও" শনাক্তকারী সমর্থিত নয়, তবে ধরুন
কিছু প্রসেসর এটিকে একটি গ্রন্থপঞ্জীকে বোঝানোর (বলে) একটি উপায় হিসাবে স্বীকৃতি দেওয়ার জন্য লেখা হয়েছিল
রেফারেন্স (অগত্যা সাধারণ অনুচ্ছেদে ফর্ম্যাটিং কোড ধারণ করে)। ব্যাপারটা হচ্ছে
"বিবলিও" অনুচ্ছেদগুলি সাধারণ প্রক্রিয়াকরণের জন্য বোঝানো হয়েছিল প্রিফেসিং দ্বারা নির্দেশিত হবে
একটি কোলন সহ প্রতিটি "বিবলিও" শনাক্তকারী:

=শুরু :বিবলিও

উইর্থ, নিকলাউস। 1976. আই
প্রোগ্রাম।> প্রেন্টিস-হল, এঙ্গেলউড ক্লিফস, এনজে।

= শেষ : গ্রন্থাবলী

এটি পার্সারকে সংকেত দেবে যে এই শুরু...শেষ অঞ্চলের অনুচ্ছেদগুলি সাপেক্ষে
সাধারন/বাক্ষিক অনুচ্ছেদ হিসাবে স্বাভাবিক পরিচালনা (যদিও এখনও ট্যাগ করা হয় শুধুমাত্র এর জন্য
প্রসেসর যারা "বিবলিও" শনাক্তকারী বোঝে)। একই প্রভাব এর সাথে হতে পারে:

=এর জন্য :বিবলিও
উইর্থ, নিকলাউস। 1976. আই
প্রোগ্রাম।> প্রেন্টিস-হল, এঙ্গেলউড ক্লিফস, এনজে।

এই শনাক্তকারীগুলিতে ":" এর অর্থ হল "সাধারণভাবে এই জিনিসগুলি প্রক্রিয়া করা, যদিও
ফলাফল কিছু বিশেষ লক্ষ্যের জন্য হবে৷ আমি পরামর্শ দিচ্ছি যে পার্সার APIগুলি "biblio" হিসাবে রিপোর্ট করে৷
লক্ষ্য শনাক্তকারী, কিন্তু এটাও রিপোর্ট করুন যে এটির একটি ":" উপসর্গ ছিল। (এবং একইভাবে, এর সাথে
"html" এর উপরে, লক্ষ্য শনাক্তকারী হিসাবে "html" রিপোর্ট করুন এবং নোট করুন অভাব একটি ":" উপসর্গের।)

মনে রাখবেন একটি "= শুরু করুন আইডেন্টিফায়ার"..." = শেষ আইডেন্টিফায়ার"অঞ্চল যেখানে আইডেন্টিফায়ার দিয়ে শুরু হয় ক
কোলন, পারেন কমান্ড ধারণ করে। উদাহরণ স্বরূপ:

=শুরু :বিবলিও

উইর্থের ক্লাসিক বিভিন্ন সংস্করণে পাওয়া যায়, যার মধ্যে রয়েছে:

= মন্তব্যের জন্য
hm, abebooks.com চেক করুন কত ব্যবহৃত কপির দাম।

= বেশি

= আইটেম

উইর্থ, নিকলাউস। 1975. আই
টিউবনার, স্টুটগার্ট। [হ্যাঁ, এটা জার্মান ভাষায়।]

= আইটেম

উইর্থ, নিকলাউস। 1976. আই
প্রোগ্রাম।> প্রেন্টিস-হল, এঙ্গেলউড ক্লিফস, এনজে।

= ফিরে

= শেষ : গ্রন্থাবলী

নোট করুন, যাইহোক, একটি "=শুরু করুন আইডেন্টিফায়ার"..." = শেষ আইডেন্টিফায়ার"অঞ্চল যেখানে আইডেন্টিফায়ার না না
একটি কোলন দিয়ে শুরু করুন, সরাসরি "=head1" ... "=head4" কমান্ড থাকা উচিত নয়
"=ওভার", না "=ব্যাক", না "=আইটেম"। উদাহরণস্বরূপ, এটি অবৈধ বলে বিবেচিত হতে পারে:

= কিছু ডেটা শুরু করুন

এটি একটি ডেটা অনুচ্ছেদ।

=head1 এটা করবেন না!

এটি একটি ডেটা অনুচ্ছেদও।

= শেষ কিছু ডেটা

একটি পড প্রসেসর সংকেত দিতে পারে যে উপরেরটি (বিশেষত "= হেড1" অনুচ্ছেদ) একটি
ত্রুটি. উল্লেখ্য, যাইহোক, নিম্নলিখিত উচিত না একটি ত্রুটি হিসাবে বিবেচিত হবে:

= কিছু ডেটা শুরু করুন

এটি একটি ডেটা অনুচ্ছেদ।

= কাটা

# হ্যাঁ, এটা আর পড নয়।
সাব এক্সক্ল { (rand() > .5)? "হু!" : "হাহ!" }

=পড

এটি একটি ডেটা অনুচ্ছেদও।

= শেষ কিছু ডেটা

এবং এটিও বৈধ:

= কিছু বিন্যাস শুরু করুন

এটি একটি ডেটা অনুচ্ছেদ।

এবং এটি একটি তথ্য অনুচ্ছেদ.

= অন্য ফরম্যাট শুরু করুন

এটি একটি ডেটা অনুচ্ছেদও।

এবং এটি একটি ডেটা অনুচ্ছেদও।

=শুরু:ইয়েটানোথারফর্ম্যাট

=head2 এটি একটি কমান্ড অনুচ্ছেদ!

এটি একটি সাধারণ অনুচ্ছেদ!

এবং এটি একটি শব্দগুচ্ছ অনুচ্ছেদ!

=শেষ :যথানোথারফর্ম্যাট

=অন্য ফরম্যাট শেষ করুন

আরেকটি তথ্য অনুচ্ছেদ!

= কিছু বিন্যাস শেষ করুন

উপরের বিষয়বস্তু "=begin :yetanotherformat" ... "=end :yetanotherformat" অঞ্চল
হয় না ডেটা অনুচ্ছেদ, কারণ অবিলম্বে অঞ্চলের শনাক্তকারী রয়েছে
(":yetanotherformat") একটি কোলন দিয়ে শুরু হয়। অনুশীলনে, বেশিরভাগ অঞ্চলে ডেটা রয়েছে
অনুচ্ছেদ থাকবে কেবল তথ্য অনুচ্ছেদ; যাইহোক, উপরের নেস্টিংটি সিনট্যাক্টিক্যালি
পড হিসাবে বৈধ, এমনকি যদি এটি বিরল হয়। যাইহোক, কিছু ফরম্যাটের জন্য হ্যান্ডলার, যেমন "html",
শুধুমাত্র ডেটা অনুচ্ছেদ গ্রহণ করবে, নেস্টেড অঞ্চল নয়; এবং তারা দেখলে অভিযোগ করতে পারে
(তাদের জন্য টার্গেট করা হয়েছে) নেস্টেড অঞ্চল বা কমান্ড, "=এন্ড", "=পড", এবং "=কাট" ছাড়া অন্য।

এছাড়াও এই বৈধ কাঠামো বিবেচনা করুন:

=শুরু :বিবলিও

উইর্থের ক্লাসিক বিভিন্ন সংস্করণে পাওয়া যায়, যার মধ্যে রয়েছে:

= বেশি

= আইটেম

উইর্থ, নিকলাউস। 1975. আই
টিউবনার, স্টুটগার্ট। [হ্যাঁ, এটা জার্মান ভাষায়।]

= আইটেম

উইর্থ, নিকলাউস। 1976. আই
প্রোগ্রাম।> প্রেন্টিস-হল, এঙ্গেলউড ক্লিফস, এনজে।

= ফিরে

কিনুন কিনুন!

= html শুরু করুন





= শেষ html

এখন এখন এখন!

= শেষ : গ্রন্থাবলী

সেখানে, "=begin html"..."=end html" অঞ্চলটি বৃহত্তর "=begin এর ভিতরে নেস্ট করা হয়েছে
:biblio"..."=end :biblio" অঞ্চল। মনে রাখবেন যে "=begin html"..."=শেষের বিষয়বস্তু
html" অঞ্চল হল ডেটা অনুচ্ছেদ(গুলি), কারণ অবিলম্বে অঞ্চলের শনাক্তকারী রয়েছে৷
("html") না একটি কোলন দিয়ে শুরু করুন।

পড পার্সার, যখন একের পর এক ডেটা অনুচ্ছেদের একটি সিরিজ প্রক্রিয়াকরণ করে (ক. এর মধ্যে
একক অঞ্চল), তাদের একটি বড় ডেটা অনুচ্ছেদ হিসাবে বিবেচনা করা উচিত যা ঘটে
ফাঁকা লাইন রয়েছে। সুতরাং উপরের বিষয়বস্তু "=begin html"..."=end html" may be
দুটি ডেটা অনুচ্ছেদ হিসাবে সংরক্ষিত (একটিতে "
src='wirth_spokesmodeling_book.png'>\n" এবং অন্যটি "এর সমন্বয়ে গঠিত \n"), কিন্তু উচিত be
একটি একক ডেটা অনুচ্ছেদ হিসাবে সংরক্ষিত (এর মধ্যে "
src='wirth_spokesmodeling_book.png'>\n\n \n")।

পড প্রসেসরের খালি সহ্য করা উচিত "=শুরু কিছু"..." = শেষ কিছু"অঞ্চল, খালি
"= শুরু করুন:কিছু"..." = শেষ:কিছু" অঞ্চল, এবং বিষয়বস্তুহীন" = জন্য কিছু" এবং
"=এর জন্য:কিছু" অনুচ্ছেদ। অর্থাৎ, এগুলো সহ্য করা উচিত:

= html এর জন্য

= html শুরু করুন

= শেষ html

=শুরু :বিবলিও

= শেষ : গ্রন্থাবলী

ঘটনাক্রমে, মনে রাখবেন যে একটি ডেটা অনুচ্ছেদ দিয়ে শুরু করে প্রকাশ করার কোন সহজ উপায় নেই
একটি আদেশ মত দেখায় যে কিছু. বিবেচনা:

= জিনিস শুরু করুন

= shazbot

= শেষ জিনিস

সেখানে, "=shazbot" একটি পড কমান্ড "shazbot" হিসাবে পার্স করা হবে, একটি ডেটা অনুচ্ছেদ হিসাবে নয়
"= shazbot\n"। যাইহোক, আপনি "=shazbot\n" ব্যবহার করে একটি ডেটা অনুচ্ছেদ প্রকাশ করতে পারেন
এই কোড:

= জিনিসপত্রের জন্য = shazbot

পরিস্থিতি যেখানে এটি প্রয়োজনীয়, সম্ভবত বেশ বিরল।

মনে রাখবেন যে =end কমান্ডগুলি অবশ্যই বর্তমান খোলা =begin কমান্ডের সাথে মিলবে। অর্থাৎ, তারা অবশ্যই
সঠিকভাবে বাসা। উদাহরণস্বরূপ, এটি বৈধ:

= বাইরে থেকে শুরু করুন

X

= ভিতরে শুরু করুন

Y

= শেষ ভিতরের

Z

= বাইরের শেষ

যখন এটি অবৈধ:

= বাইরে থেকে শুরু করুন

X

= ভিতরে শুরু করুন

Y

= বাইরের শেষ

Z

= শেষ ভিতরের

এই পরেরটি অনুপযুক্ত কারণ যখন "=end outer" কমান্ডটি দেখা যায়, বর্তমানে খোলা
অঞ্চলটির ফরম্যাটের নাম "অভ্যন্তরীণ" আছে, "বাহ্যিক" নয়। (এটি কেবল ঘটে যে "বাহ্যিক" হল
উচ্চতর অঞ্চলের ফরম্যাট নাম।) এটি একটি ত্রুটি। প্রসেসর ডিফল্ট রিপোর্ট দ্বারা আবশ্যক
এটি একটি ত্রুটি হিসাবে, এবং সেই ত্রুটি ধারণকারী নথির প্রক্রিয়াকরণ বন্ধ করতে পারে। একটি ফলাফল
এর মধ্যে অঞ্চলগুলি "ওভারল্যাপ" করতে পারে না। অর্থাৎ, উপরের পরবর্তী ব্লকটি করে না
"বাহ্যিক" নামক একটি অঞ্চলের প্রতিনিধিত্ব করে যা X এবং Y ধারণ করে, নামক একটি অঞ্চলকে ওভারল্যাপ করে
"অভ্যন্তরীণ" যার মধ্যে Y এবং Z রয়েছে। কিন্তু কারণ এটি অবৈধ (যেমন সব দৃশ্যত ওভারল্যাপিং)
অঞ্চলগুলি হবে), এটি এটিকে প্রতিনিধিত্ব করে না, বা কিছুতেই।

একইভাবে, এটি অবৈধ:

= জিনিস শুরু করুন

= শেষ hting

এটি একটি ত্রুটি কারণ অঞ্চলটি "thing" দ্বারা খোলা হয় এবং "=end" বন্ধ করার চেষ্টা করে৷
"hting" [sic]।

এটিও অবৈধ:

= জিনিস শুরু করুন

= শেষ

এটি অবৈধ কারণ প্রতিটি "=end" কমান্ডের একটি ফর্ম্যাটনাম প্যারামিটার থাকতে হবে৷

onworks.net পরিষেবা ব্যবহার করে অনলাইনে perlpodspec ব্যবহার করুন



সর্বশেষ লিনাক্স এবং উইন্ডোজ অনলাইন প্রোগ্রাম