Perl6: मैं कमांड लाइन से मिश्रित पैरामीटर कैसे पढ़ूं?


9

मैं पोस्ट को हटा रहा हूं क्योंकि मुझे सेंसरशिप / संपादन पर परामर्श नहीं दिया गया था।


देखें उदाहरण प्राप्त करें :: लंबी
Håkon Hkgland

हाय @ टोड। मैं देख सकता हूं कि आप दूसरों के संपादन से परेशान थे, शायद इसलिए कि आप संपादन के संबंध में एसओ के काम करने के तरीके से परिचित नहीं हैं , उदाहरण के लिए 'धन्यवाद' । हालाँकि आपके अपने प्रश्न का स्वयं का संपादन दूसरों को परेशान कर रहा है क्योंकि यह उन लोगों के समय / प्रयास का अवमूल्यन करता है जिन्होंने आपको उत्तर दिया था और अन्य जो एसओ का उपयोग करते हैं। कृपया मुझे अपने प्रश्न को फिर से बहाल करने के लिए अपना आशीर्वाद देने पर विचार करें जैसा कि यह था
raiph

जवाबों:


9

यहाँ Getopt :: Long का उपयोग कर एक उदाहरण दिया गया है :

use v6;
use Getopt::Long;

my %opt = help => False, 'r=s' => "", 'q=s' => "", 'w=s' => "";
my %options = get-options(%opt).hash;
say %options;
say @*ARGS;

उदाहरण रन:

$ p.p6  -w xyz -q def -r abc hello
{help => False, q => def, r => abc, w => xyz}
[hello]

@Todd विकल्प के रूप में संसाधित किए गए सभी तर्कों को हटा दिया जाता @*ARGSहै get-options()। इसलिए गैर-विकल्प तर्क @*ARGSबाद में छोड़ दिए जाते हैं । अद्यतन उत्तर देखें
Håkon Hægland

यह helpएक डिफ़ॉल्ट मान पर सेट होता है। संभवतः एक बूलियन का उपयोग करना बेहतर होगा: help => Falseक्योंकि आमतौर पर मदद संदेश दिखाने के लिए मदद विकल्प का उपयोग किया जाता है। मैंने उत्तर को ऐसे संपादित किया है जो helpएक बूलियन है।
एचकॉन हॉलैंड

8

MAINउप का उपयोग करें :

#!/usr/bin/env raku

use v6;

sub MAIN(:$these ="These", :$are="Are", :$params="Params") {
    say "$these $are $params";
}

आप किसी भी क्रम में इन मापदंडों को टाइप कर सकते हैं:

./command-line.p6 --are=well --these=those
those well Params

और आपको वास्तविक पैरामीटर दिखाते हुए किसी भी अतिरिक्त पैरामीटर को पकड़ेंगे:

./command-line.p6 --are=well --these=those --not=this_one
Usage:
  ./command-line.p6 [--these=<Any>] [--are=<Any>] [--params=<Any>]

यदि आप केवल एकल डैश के साथ मापदंडों में रुचि रखते हैं, तो आपको गेटऑन की आवश्यकता होगी :: जब तक कि हकोन द्वारा संकेत दिया गया हो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.