আমি যখন পার্লের সাথে আমার পাইথন স্ক্রিপ্টটি সম্পাদন করি তখন কেন আমি কোনও সিনট্যাক্স ত্রুটি পাই না?


85

আমি সবেমাত্র কয়েকটি টেস্টিং পাইথন কোড লিখেছি test.pyএবং আমি এটি নীচে চালু করছি:

perl test.py

কিছুক্ষণ পর আমি আমার ভুল বুঝতে পারলাম। আমি "কিছুক্ষণ পরে" বলি, কারণ পাইথন কোডটি আসলে সঠিকভাবে কার্যকর হয়ে যায়, যেন পাইথন ইন্টারপ্রেটারে!

আমার পার্ল কেন আমার পাইথনের ব্যাখ্যা দিচ্ছে? test.pyএটা এমন দেখতে:

#!/usr/bin/python

...Python code here...

মজার বিষয় হল, আমি যদি বিপরীতটি করি (যেমন কল python something.pl) তবে আমি সিনট্যাক্স ত্রুটির একটি ভাল চুক্তি পাই।


6
আমি অনুমান করছি #!এটি ফাইলের শুরুতে। প্রকৃতপক্ষে আমি যদি সে ঠুং ঠুং শব্দ সরিয়ে ফেলি, আমি প্রত্যাশিত আচরণ পাচ্ছি। সুরক্ষা দৃষ্টিকোণ থেকে কি এটি কোনও খারাপ ধারণা নয়?
ডাকাভ

8
শাবংয়ের বিন্দু এটি একজন দোভাষীকে নির্দিষ্ট করে। আপনি যদি চালানোর কোডটিকে বিশ্বাস করেন না, তবে আপনি এটি প্রথম স্থানে চালাবেন না।
সোব্রিক

4
না সত্যিই না. আপনার স্ক্রিপ্ট একটি পাঠ্য ফাইল। বেশিও না, কমও না. এটি দোভাষী ছাড়া 'চালায় না'।
সোব্রিক

4
"আমার পার্ল কেন আমার পাইথনের ব্যাখ্যা দিচ্ছে?" "এমন সমস্যা নয় যা আর পুনরুত্পাদন করা যায় না বা একটি সাধারণ টাইপোগ্রাফিক ত্রুটি।" পুনরায় খুলতে ভোট দিয়েছেন। কিউ এবং এ শোতে উত্সাহ দেওয়া এটি জনপ্রিয় আগ্রহের প্রশ্ন।
ইকগামি

4
@ ইকগামি জনপ্রিয়তাই নির্বিশেষে, এটি স্পষ্টতই "একটি সাধারণ টাইপোগ্রাফিক ত্রুটি নয় ... এমনভাবে সমাধান করা হয়েছে যা ভবিষ্যতের পাঠকদের সহায়তা করার সম্ভাবনা নয়।" পুনরায় খুলতে ভোট দিয়েছেন।
এইসুইটসস ব্ল্যাকনট

উত্তর:


114

পার্লারুন থেকে ,

যদি #!লাইন শব্দ "Perl" কিংবা শব্দ "ডাউনলোড" কর্মসূচির নামকরণ ধারণ করে না #!পার্ল অনুবাদক পরিবর্তে মৃত্যুদন্ড কার্যকর করা হয়। এটি সামান্য উদ্ভট, তবে এটি এমন মেশিনে লোকদের সহায়তা করে যা না করে #!, কারণ তারা কোনও প্রোগ্রাম বলতে পারে যে তাদের শেলটি / usr / bin / perl , এবং পার্ল তাদের জন্য প্রোগ্রামটি সঠিক দোভাষীর কাছে প্রেরণ করবে।

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

$ cat a
#!/bin/cat
meow

$ perl a
#!/bin/cat
meow

32
কি দারুন. আপনার অস্পষ্ট বৈশিষ্ট্যগুলি সম্পর্কে কথা বলুন। আমি 20 বছরেরও বেশি সময় ধরে পার্ল ব্যবহার করে আসছি, এবং এটি করার এটি আমার কোনও ধারণা ছিল না।
সিজেএম

4
আমি ডস, ভিএমএস এবং সোলারিতে পার্ল ভি 4 ব্যবহার করতে শুরু করেছি। এটি ওএস অ্যাগনস্টিক / ব্রিজিং বৈশিষ্ট্য যা ক্রস প্ল্যাটফর্মের জীবনকে এত সহজ করে তুলেছিল।
tjd

4
@ মার্কওয়ানলিউউইন আপনি যখন লিনাক্স, ওএসএক্স, ভ্যাক্স / ভিএমএস, উইন্ডোজ, সোলারিস, ওএস / ২ এবং অন্য যে কোনও কিছুতে স্ক্রিপ্ট-ল্যাঙ্গুয়েজ প্রোগ্রামের পোর্টিংয়ের সবচেয়ে বিরক্তিকর অংশটি শুরু করতে শুরু করছেন, যদিও এই সিস্টেমগুলির মধ্যে অনেকগুলি সাধারণত "কমান্ডটি টাইপ করুন, এটি সন্ধান করুন এবং সম্পাদন করুন" বৈশিষ্ট্যটি সাধারণভাবে ভাগ করে নেওয়া, প্রায় সমস্ত কিছু আলাদাভাবে করুন। পার্লের এই বৈশিষ্ট্যটি পার্লকে কার্যকারিতার ক্ষেত্রে একটি সহজ ব্যবধান-সেতু তৈরি করে - আপনি কেবল একটি ইউনিক্স-স্টাইলের শেবাং লিখতে পারেন এবং পার্ল কোড উপস্থিত থাকলে পার্ল কোড থাকুক না কেন, সর্বদা কাজ করবে - এটি আরও সর্বজনীনের মতো #! /usr/bin/env foo
zxq9

4
@ ইমিবিস শেলগাং লাইনটি পার্ল 5-পোর্টার মেইলিং লিস্টে রহস্য পার্সিংয়ের সূত্র থেকে : " indirএমন একটি প্রোগ্রাম যা পরোক্ষভাবে অন্যান্য প্রোগ্রামগুলি সম্পাদন করার জন্য ডিজাইন করা হয়েছিল My আমার স্মৃতিচারণাটি হ'ল ওএস স্থানীয়ভাবে সরবরাহ করে না এমন নির্ধারিত পরিস্থিতিতে এটি বিশেষভাবে কার্যকর বলে মনে করা হত it আপনি অনেক সাহায্য করেছেন এবং / অথবা সম্ভবত ওএস কার্নেল আপনাকে 32 টি অক্ষরের কমান্ড লাইনে সীমাবদ্ধ করে ""
এইসুইটসস ব্ল্যাকনট

4
এটি কেবল প্রোগ্রামিং ভাষার রান্নাঘর সিঙ্ক হিসাবে পার্লের খ্যাতি সীমাবদ্ধ করে। একটি আকর্ষণীয় পর্যবেক্ষণ হিসাবে, আমি বিশ্বাস করি যে শেবাংয়ের আসল বাস্তবায়ন শেল বৈশিষ্ট্য হিসাবে ছিল, এটি কেবল পরে ইউনিক্স কার্নেলে চলে গেছে। পার্লে অনেকগুলি শেল মেকানিজম (যেমন কমান্ড আউটপুট প্রতিস্থাপনের জন্য ব্যাকটিক্স) অন্তর্ভুক্ত রয়েছে, এটি আরও একটি মাত্র।
বার্মার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.