Perl6: bagaimana cara membaca parameter campuran dari baris perintah?


9

Saya menghapus posting karena saya tidak berkonsultasi tentang penyensoran / pengeditan.



Hai @Todd. Saya dapat melihat Anda kesal dengan suntingan orang lain, mungkin karena Anda tidak terbiasa dengan cara kerja SO mengenai pengeditan , misalnya mengedit 'terima kasih' . Namun pengeditan Anda sendiri atas pertanyaan Anda sendiri mengecewakan orang lain karena merendahkan waktu / upaya orang-orang yang telah menjawab Anda dan orang lain yang menggunakan SO. Tolong pertimbangkan untuk memberi saya berkah Anda untuk mengembalikan pertanyaan Anda seperti sebelumnya .
raiph

Jawaban:


9

Berikut adalah contoh menggunakan 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;

Contoh dijalankan:

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

@Todd Semua argumen yang diproses sebagai opsi dihapus dari @*ARGSoleh get-options(). Jadi argumen non-opsi ditinggalkan @*ARGSsetelahnya. Lihat jawaban yang diperbarui
Håkon Hægland

Ini menetapkan helpke nilai default 0. Mungkin lebih baik menggunakan boolean: help => Falsekarena opsi bantuan biasanya digunakan untuk menampilkan pesan bantuan. Saya telah mengedit jawaban sedemikian rupa sehingga helpboolean.
Håkon Hægland

8

Gunakan MAINsub :

#!/usr/bin/env raku

use v6;

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

Anda dapat mengetik parameter ini dalam urutan apa pun:

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

Dan juga akan menangkap parameter tambahan apa pun, menampilkan parameter aktual:

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

Jika Anda hanya tertarik pada parameter dengan satu tanda hubung, Anda perlu GetOpt :: Long seperti yang ditunjukkan oleh Hakon

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.