পার্ল স্ক্রিপ্টগুলির সত্যই কোনও এক্সটেনশন থাকা উচিত?


12

আমি সবেমাত্র ও'রিলির লার্নিং পার্ল, 6th ষ্ঠ সংস্করণ পড়তে শুরু করেছি এবং আমি যখন এই উদ্ধৃতিটি পেলাম তখন অবাক হয়েছি।

#!/usr/bin/perl
print "Hello, world!\n";

আসুন কল্পনা করুন যে আপনি এটি আপনার পাঠ্য সম্পাদককে টাইপ করেছেন। (যন্ত্রাংশগুলি কী বোঝায় এবং সেগুলি কীভাবে কাজ করে সে সম্পর্কে এখনও চিন্তা করবেন না a একটি মুহুর্তের মধ্যে আপনি সেগুলি সম্পর্কে দেখতে পাবেন)) আপনি সাধারণত যে কোনও নামেই সেই প্রোগ্রামটি সংরক্ষণ করতে পারেন। পার্লের কোনও বিশেষ ধরণের ফাইলের নাম বা এক্সটেনশান প্রয়োজন হয় না এবং এটি কোনও এক্সটেনশন ব্যবহার না করা ভাল।

কেন কোনও এক্সটেনশন না রাখাই ভাল? কল্পনা করুন যে আপনি বোলিংয়ের স্কোর গণনা করার জন্য একটি প্রোগ্রাম লিখেছেন এবং আপনি আপনার সমস্ত বন্ধুকে বলেছেন যে এটি বোলিং.পিএলএক্স বলে called একদিন আপনি সিটিতে পুনরায় লেখার সিদ্ধান্ত নিয়েছেন কী আপনি এখনও এটি একই নামেই ডাকেন, ইঙ্গিত করে যে এটি এখনও পার্লটিতে লেখা আছে? না আপনি সবাইকে বলুন যে এর নতুন নাম আছে? (এবং এটিকে বোলিং.২ বলবেন না, দয়া করে!) উত্তরটি হ'ল তারা যদি কেবল এটি ব্যবহার করে তবে এটি কোন ব্যবসায় নয় এটি কোন ভাষায় লেখা আছে। সুতরাং এটি প্রথমত বোলিং বলা উচিত ছিল।

এটি এই একমাত্র উত্স যা এই দৃশ্যের সাথে দেখেছি, আমি যা পড়েছি তার সমস্ত কিছুই .pl এক্সটেনশানকে সমর্থন করে। আমি এখনও পার্ল প্রোগ্রামার নই, আমি অভ্যাসে যাবার আগে আমি এই বিষয়ে সম্প্রদায়ের দৃষ্টিভঙ্গিটি জানতে চাই।


যেমন উত্তরগুলি ব্যাখ্যা করে, এক্সটেনশনটি গুরুত্বপূর্ণ নয়। স্ক্রিপ্টগুলির জন্য (পার্ল সহ) গুরুত্বপূর্ণ বিষয় হ'ল শেবাং লাইন

1
না স্যার, রাজি হবেন না। ফাইল এক্সটেনশন ছাড়াই আইডিই এবং প্রোগ্রামারগুলির সম্পাদকরা সিনট্যাক্স হাইলাইট করার বিষয়ে কীভাবে সিদ্ধান্ত নেন?
গ্র্যান্ডমাস্টারবি

3
শেবাং লাইনটি দেখে বা মডেলাইনগুলি পড়ে @ গ্র্যান্ডমাস্টারবি। আমি যে .plপ্রোগ্রামগুলিকে বিতরণ করতে চাই তার জন্য আমি কখনই কোনও এক্সটেনশন ব্যবহার করব না (সেই তথ্যটি গোলমাল, সংকেত নয়), তবে স্থানীয় স্ক্রিপ্টগুলির জন্য এটি দরকারী অনুস্মারক। যাইহোক, এই আলোচনাটি পার্ল কোডের 90%% অপ্রাসঙ্গিক কারণ এটি মডিউল ( .pmএক্সটেনশান প্রয়োজনীয়) বা একটি পরীক্ষায় ( .tএক্সটেনশন প্রথাগত) in
আমন

1
@ গ্রান্ডমাস্টারবি আমি লিনাক্সে বিকাশ করেছি এবং ভিম এবং কেট উভয়ই সঠিকভাবে #!/usr/bin/env perlপার্ল স্ক্রিপ্ট হিসাবে লাইনটি শুরু করে এমন একটি ফাইল সনাক্ত করতে পারে যদি ফাইলটির কোনও বিরোধী এক্সটেনশন না থাকে (যেমন .cpp)। fileপ্রোগ্রাম (একটি প্রদত্ত ইনপুট জন্য একটি MIME প্রকার অনুমান করতে ব্যবহৃত) সঠিকভাবে deduces text/x-perlএক্সটেনশন নির্বিশেষে।
আমন

3
সেখানে কোথাও আমি ভেবেছিলাম আমরা লক্ষনীয় যে .pl এক্সটেনশন ছিল পি erl ibraries, এবং একরকম মানুষ প্রোগ্রামের জন্য কি ব্যবহার করা মধ্যে morphed।
ব্রায়ান ডি বন্ধু

উত্তর:


14

বইয়ের পরামর্শটি পুরোপুরি বৈধ - কমপক্ষে ইউনিক্স-এর মতো সিস্টেমের জন্য। স্ক্রিপ্টের সম্পাদন #!ফাইলের নামের বর্ধিত অংশ দ্বারা নয়, লাইন দ্বারা নিয়ন্ত্রিত হয় । পার্ল স্ক্রিপ্টগুলির জন্য একটি বিশেষ এক্সটেনশন ব্যবহার করে এমন তথ্য উন্মোচিত হয় যা স্ক্রিপ্টটি চালাচ্ছিল কারও পক্ষে গুরুত্বপূর্ণ নয়।

উইন্ডোজ একটি আলাদা বিষয়। উইন্ডোজ #!প্রক্রিয়া সমর্থন করে না ; পরিবর্তে, ফাইল খোলার জন্য ব্যবহৃত পদ্ধতিটি এক্সটেনশনের উপর নির্ভর করে। উদাহরণস্বরূপ, উইন্ডোজ শেলটি কনফিগার করা যেতে পারে যাতে কোনও .plফাইলের উপর ডাবল-ক্লিক করা (বা প্রম্পট থেকে এটি চালানো) পার্ল ইন্টারপ্রেটারের কাছে এটি আর্গুমেন্ট হিসাবে প্রেরণ করে। পার্ল সিস্টেম ইনস্টল করা সম্ভবত এটি স্বয়ংক্রিয়ভাবে আপনার জন্য সেট আপ করবে।

পার্ল স্ক্রিপ্টগুলি পোর্টেবল করার উদ্দেশ্যে, .plউইন্ডোজ দ্বারা প্রয়োজনীয় প্রত্যয়টি ইউনিক্সের মতো সিস্টেমে "ফাঁস" হতে পারে। কোনও সিস্টেম-নির্দিষ্ট ইনস্টলেশন পদ্ধতি থাকা সম্ভবত স্ক্রিপ্টটির ইনস্টল করার সাথে সাথে একটি উপযুক্ত নাম চয়ন করে।

ইউনিক্স এর ওপর মত সিস্টেম, একটি .plএক্সটেনশন বেশিরভাগ নিরীহ, এবং আপনি এটা কি ভাষা একটি নির্দিষ্ট স্ক্রিপ্ট দ্বারা ব্যবহৃত হয় একটি অনুস্মারক হিসেবে দরকারী এটি যদি (সম্ভবত আপনি একটি সংগ্রহে আছে .pl, .py, .sh, এবং .rb, তাহলে আপনি তা করতে পারে স্ক্রিপ্ট)। বইটিতে বর্ণিত হিসাবে সেই পদ্ধতির কিছু ত্রুটি রয়েছে: আপনি যদি অন্য ভাষায় কোনও স্ক্রিপ্টকে পুনরায় প্রতিস্থাপন করেন তবে আপনাকে নামটি পরিবর্তন করতে হবে এবং যেটি কল করে তা আপডেট করতে হবে।

(পার্ল মডিউলগুলির একটি .pmএক্সটেনশন থাকা দরকার যাতে পার্ল সেগুলি সন্ধান করতে পারে example উদাহরণস্বরূপ, এটি:

use Foo::Bar;

দোভাষীর অ্যারে তালিকাভুক্ত ডিরেক্টরিগুলির মধ্যে একটির Bar.pmনামে নামের ডিরেক্টরিতে নামক একটি ফাইল সন্ধান করতে হবে । তবে ফাইলগুলি সরাসরি মৃত্যুদন্ড কার্যকর করার জন্য বোঝানো হয় না))Foo@INC.pm

এটি এই একমাত্র উত্সটি আমি এই দৃশ্যের সাথে দেখেছি, আমি যা পড়েছি তা সমস্তই .plএক্সটেনশানটিকে সমর্থন করে ।

আমি যে অবাক লাগে। পরামর্শ আমি দেখেছি বেশিরভাগ বলছেন না ব্যবহার করতে .plএক্সিকিউটেবল স্ক্রিপ্টের জন্য এক্সটেনশান।


1

কিছু যায় আসে না

#!/usr/bin/perl

কোডটি চালানোর জন্য কোন প্রোগ্রামটি ব্যবহার করতে হবে তা সিস্টেমকে বলে।

আপনি যদি এটি পরিবর্তন

#!/usr/bin/bash

অথবা

#!/usr/bin/python

আপনি অন্য একটি দোভাষী ব্যবহার করবেন।

এক্সটেনশনটি রাখা সম্পূর্ণরূপে alচ্ছিক এবং ব্যবহারকারী যে ভাষাটি জানার প্রয়োজন তা বেশিরভাগ ক্ষেত্রেই 100% সঠিক।

দৌড়ানো add 2 3এবং ফিরে আসা 5 কেবল আমার (ব্যবহারকারী হিসাবে) যত্নশীল।

স্ক্রিপ্টগুলিতে আমি কেবলমাত্র একবারে এক্সটেনশন যুক্ত করি যদি কোনও কারণে ভাষাটি জানতে আমার শেষ ব্যবহারকারীর (কিছু সময় আমার নিজের) প্রয়োজন হয়।

একই টাস্কটি সম্পাদনের জন্য বিভিন্ন উপায়ে দেখানোর জন্য example.sh বা example.pl।

যদিও যা কিছু বলেছে, এটি একটি এক্সটেনশন না করাই বেশি সাধারণ তবে এটির স্বাদ।


1

সংক্ষিপ্ত বিবরণ একটি নিখুঁত বৈধ পরামর্শ দেয়।

আমি আরও যোগ করব, একটি ছোট সিস্টেমের জন্য এটি প্রয়োগের বিষয়ে আপনার মতামত পরিবর্তনের ক্ষেত্রে এখানে এবং কয়েকটি ফাইল এবং / অথবা স্ট্রিংগুলির নতুন নামকরণ করা বেশ নগণ্য quite

অন্যদিকে, লার্গিশ সিস্টেমগুলির বিকাশের একটি আধুনিক প্রবণতাটি কোনও এক্সটেনশন ছাড়াই মূল এক্সিকিউটেবল ফাইল থাকা বোঝায় যখন সমস্ত মডিউলগুলি এখনও ভাষা-নির্দিষ্ট এক্সটেনশানটির উপর নির্ভর করে।

প্রকৃতপক্ষে, পাইথনটির নকশা দ্বারা এটি প্রয়োজন এবং সাধারণত মূল পাইথন স্ক্রিপ্ট (নামটি এক্সটেনশন ছাড়াই একটি) পুরো অ্যাপ্লিকেশনটিকে বুটস্ট্র্যাপ করে।


0

সমস্ত বই আপনাকে জানিয়েছে যে ইউনিক্সে, ফাইলের সম্প্রসারণ কোনও কনভেনশন ছাড়া আর কিছুই নয়। বাস্তবে, অনেক ধরণের ফাইলগুলি এই বিভাগে আসে। রুবি ফাইলগুলি একই কনভেনশন ব্যবহার করে যাতে তাদের .rb সম্প্রসারণের প্রয়োজন হয় না। সি সংকলকগুলিকে কেবল বৈধ সি কোডের প্রয়োজন হয়, তাই আপনি চাইলে তাদের নাম দিতে পারেন।

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

নিয়মের এক ব্যতিক্রম

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


সি সংকলক সাধারণত তাদের ইনপুট ফাইলগুলি এক্সটেনশানের উপর নির্ভর করে আলাদাভাবে আচরণ করে। উদাহরণস্বরূপ, জিসিসি একইরূপে .সি সোর্স কোড হিসাবে, .cpp, .cc, .Cসি ++ সোর্স কোড হিসাবে, .oএকটি বস্তুর ফাইল হিসাবে linker কাছে হস্তান্তর করা হবে, ইত্যাদি। কমান্ড-লাইন বিকল্পের সাহায্যে আপনি এটিকে ওভাররাইড করতে পারেন, তবে আমি এটিকে এত কম ব্যবহার করেছি যে এটি কী তা আমার মনে নেই। .cসি উৎস ফাইলের জন্য এক্সটেনশন গুরুত্বপূর্ণ। .plএক্সিকিউটেবল পার্ল স্ক্রিপ্টের জন্য এক্সটেনশন (অন্তত ইউনিক্স এর ওপর মত সিস্টেম) নয়।
কিথ থম্পসন

1
@ কিথথম্পসন: বাস্তবে, এসইউএস-কমপ্লায়েন্ট ইউনিক্স সিস্টেমে এই ফাইল এক্সটেনশনগুলি c99কমান্ডের স্পেসিফিকেশনেরও একটি অংশ : pubs.opengroup.org/onlinepubs/9699919799/utilities/…
Jörg W

-4

"ও'রিলির লার্নিং পার্ল, 6th ষ্ঠ সংস্করণ" বইয়ের উদ্ধৃতিটি আবর্জনা। পার্লের সাথে সি এর তুলনা করা সমতুল্য নয়, কারণ সূচনাকারী সি বাইনারি হিসাবে সংকলন করবে, যার কোনও এক্সটেনশন নেই।

পার্ল সংকলন করা হবে না তাই ফাইলের ধরন সনাক্ত করতে কিছু পাঠ্য সম্পাদককে এক্সটেনশনের প্রয়োজন হবে।

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

ভবিষ্যতে আপনার যদি মূল ফাইলটি পরিবর্তন করতে হয় তবে আপনার নতুন অবস্থানে নির্দেশ করতে আপনাকে কেবলমাত্র সিএমলিংক পরিবর্তন করতে হবে।


পাঠ্য সম্পাদক সম্পর্কে বিবৃতিটি বৈধ হতে পারে - তবে ইমাস এবং ভিএম উভয়ই একটি বিশেষ এক্সটেনশন ছাড়াই পার্ল স্ক্রিপ্ট সনাক্ত করতে সক্ষম। "সেরা অনুশীলন" সম্পর্কে আপনার দাবী কিছু সমর্থনের সাথে আরও দৃinc়প্রত্যয়ী হবে। আমি সর্বদা এক্সটেনশন ছাড়াই আমার (লিনাক্স) সিস্টেমে পার্ল স্ক্রিপ্টগুলি ইনস্টল করি এবং এটি কখনও কোনও সমস্যার কারণ হয় না।
কিথ থম্পসন

হ্যাঁ, অবশ্যই আপনার স্ক্রিপ্টটি চলবে যদি এতে #!লাইনে হ্যাশ ব্যাং থাকে ( ), আপনি উল্লেখ করেছেন যে আপনি লিনাক্সের উপর কাজ করেন যা দুর্দান্ত .. সরাসরি আপনার binডিরেক্টরিতে ফাইল লিখার পরিবর্তে আপনাকে বিন ডিরেক্টরিতে একটি সিমিলিংক .. কেন অবাক করে দেখুন।
অ্যারন গোশাইন 21

সম্ভবত এটি প্যাকেজ ম্যানেজারের উপর নির্ভর করে? আমার উবুন্টু 14.04 সিস্টেমে আমার কাছে 325 পার্ল স্ক্রিপ্টগুলি সরাসরি অধীনে ইনস্টল করা আছে /usr/bin, সিমলিঙ্ক হিসাবে নয়; সেগুলি সমস্ত সিস্টেমের প্যাকেজ ম্যানেজার দ্বারা ইনস্টল করা হয়েছিল। প্যাকেজ পরিচালকের নিজস্ব ডাটাবেস রয়েছে যা প্রতিটি প্যাকেজের জন্য সমস্ত ফাইলের অবস্থানের উপর নজর রাখে। (উত্স থেকে যে সফ্টওয়্যারটি আমি তৈরি করি তার জন্য আমি সিমলিংক ব্যবহার করি)) তবে পার্ল স্ক্রিপ্টগুলির একটি .plএক্সটেনশন হওয়া উচিত কিনা তা নিয়ে আমি কী করব তা নিশ্চিত not
কিথ থমসন

আমি মনে করি যে এখানে শীর্ষে চলে যেতে পারে, আমি যে বিন্দুটি করার চেষ্টা করছিলাম সেটি হ'ল।
অ্যারন গোশাইন 2'16

1
সেই মন্তব্যে আরও কিছু থাকার কথা ছিল?
কিথ থম্পসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.