2016-01-26 56 views
11

Perl 6通過MAIN具有很好的內置命令行解析功能。但是,我面臨的問題似乎很瑣碎,但我無法弄清楚。如何在Perl 6中使`-n = 3`與`-n 3`相同?

一個簡單的MAIN

sub MAIN(Int :n(:$num)) { 
    say "You passed: " ~ $num; 
} 

然後我就可以把我的腳本爲:

$ ./test.p6 -n=1 

或:

$ ./test.p6 --num=1 

,但不能用:

$ ./test.p6 -n 1 # or even -n1 

或:

$ ./test.p6 --num 1 

我通過design document for MAIN就沒有運氣。我該如何做這項工作?

回答

6

一些信息:

這是a reported bug。如果您發現該錯誤報告中未提及的更多信息,例如找到解決方法,請考慮在報告中添加評論。

爲了您的方便,這裏有另外兩個現存的缺陷報告,我發現主:Usage does not print required type for positional params in MAINfail to handle numbers as option name for MAIN

一些選項:

使用選項模塊。也許Getopt::Tiny會做到這一點。

幫助修復#124664。 Perl 6(大部分)是用Perl 6編寫的。我認爲在原始主命令行中引用並將它們綁定到MAIN簽名變量的代碼是process-cmd-args中的20行左右。

相關問題