Perl6: ฉันจะอ่านพารามิเตอร์แบบผสมจากบรรทัดคำสั่งได้อย่างไร


9

ฉันกำลังลบโพสต์เนื่องจากฉันไม่ได้ปรึกษาเรื่องการเซ็นเซอร์ / การแก้ไข


ดูตัวอย่างเช่นGetopt :: Long
HåkonHægland

สวัสดี @Todd ฉันสามารถดูคุณกำลังอารมณ์เสียโดยคนอื่น ๆ การแก้ไขคงเพราะคุณไม่คุ้นเคยกับวิธีการทำงานของ SO เกี่ยวกับการแก้ไขเช่นการแก้ไขออก 'ขอบคุณ' อย่างไรก็ตามการแก้ไขคำถามของคุณเองทำให้ผู้อื่นรู้สึกขุ่นเคืองเนื่องจากจะลดคุณค่าเวลา / ความพยายามของผู้ที่ตอบคุณและคนอื่น ๆ ที่ใช้ SO โปรดพิจารณาให้ฉันให้ศีลให้พรของคุณจะกลับไปคำถามของคุณตามที่มันเป็น
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åkonHægland

มันตั้งhelpเป็นค่าเริ่มต้นเป็น 0 อาจจะเป็นการดีกว่าถ้าใช้บูลีน: help => Falseเนื่องจากโดยทั่วไปแล้วตัวเลือกวิธีใช้จะใช้เพื่อแสดงข้อความช่วยเหลือ ฉันได้แก้ไขคำตอบเช่นhelpนี้ว่าเป็นบูลีน
HåkonHægland

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>]

หากคุณสนใจเฉพาะพารามิเตอร์ที่มีเส้นประเดียวคุณจะต้องใช้ GetOpt :: Long ตามที่ระบุโดย Hakon

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.