当前位置: 首页 > 知识库问答 >
问题:

Perl6:如何从命令行读取混合参数?

杨凌
2023-03-14

我总是从命令行运行程序,允许你混合参数的顺序。如果你在其中加入额外的东西,他们就会抓住你。例如:

$xxx -r abc  -q def  -w xyz

$xxx -w xyz  -q def  -r abc 

他们是怎么做到的?有这方面的模块吗?

共有2个答案

巩才捷
2023-03-14

使用< code>MAIN sub:

#!/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所示

翟英达
2023-03-14

下面是一个使用Getopt::例子:

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]
 类似资料:
  • 12.4.1 os 包 os 包中有一个 string 类型的切片变量 os.Args,用来处理一些基本的命令行参数,它在程序启动后读取命令行输入的参数。来看下面的打招呼程序: 示例 12.11 os_args.go: // os_args.go package main import ( "fmt" "os" "strings" ) func main() {

  • 问题内容: Python程序员可以通过哪些方式做到这一点? 问题答案: 标准库中的规范解决方案是: 这是一个例子: 任意顺序的多个选项。 短期和长期选择。 默认值。 生成使用帮助消息。

  • 我创建了一个扫描器,从命令行中的第一个元素读取文本文件,但它会导致。如何将其格式化为接受此文件的位置? 下面是我的代码: 例如,如果文件名是,我将作为命令行中的第一个元素。

  • 在Perl 5中,我能够多次设置一个选项,就像在这个问题中一样: 多次使用相同选项的Perl Getopt 我想知道是否有可能对Perl 6和MAIN子级做同样的事情?

  • 我试图在Perl6中逐行读取一个巨大的gz文件。 我正在尝试做这样的事情 但是这会给出一个错误,我有一个格式不正确的UTF-8。我看不到如何从帮助页面读取gzip材料https://docs.perl6.org/language/unicode#UTF8-C8或https://docs.perl6.org/language/io 我想完成和在Perl5中一样的事情:http://blog-en .

  • 问题内容: 尝试仅在文件包含数字和单词的地方读取双数字。到目前为止,我已经完成的代码可以从文件中正确读取并打印带有数字和单词的完整列表。不知道如何排除单词并打印只读的双精度数字。 问题答案: 这是一个工作测试 请注意,我使用了美国语言环境,以使扫描仪插入“。”作为小数点分隔符,在我的语言环境(默认)中为“,”。另请注意,nextDouble可以识别1.1和3(整数)