Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
@Perl中的ARGV(命令行参数)_Perl_Command Line_Arguments_Argument Passing_Argv - Fatal编程技术网

@Perl中的ARGV(命令行参数)

@Perl中的ARGV(命令行参数),perl,command-line,arguments,argument-passing,argv,Perl,Command Line,Arguments,Argument Passing,Argv,(在标记问题之前,请先阅读!我知道有人问过类似的问题,但形式不同且不完整) 我试图找到处理命令行参数或脚本选项的自然和正常方法。假设脚本可以采用任何可能的参数或选项类型。例如: /myscript.pl运行异常--help/sbin/proc-f filename CONFIG=set.CONFIG LOG=me.LOG 到目前为止,我知道的最好的方法是使用Dumper,如下所示: use strict; use warnings; use Data::Dumper qw(Dumper); p

(在标记问题之前,请先阅读!我知道有人问过类似的问题,但形式不同且不完整)

我试图找到处理命令行参数或脚本选项的自然和正常方法。假设脚本可以采用任何可能的参数或选项类型。例如:

/myscript.pl运行异常--help/sbin/proc-f filename CONFIG=set.CONFIG LOG=me.LOG

到目前为止,我知道的最好的方法是使用
Dumper
,如下所示:

use strict;
use warnings;
use Data::Dumper qw(Dumper);

print Dumper \@ARGV;
输出:

$VAR1 = [
      'runabnormal',
      '--help',
      '/sbin/proc',
      '-f',
      'filename',
      'CONFIG=set.config',
      'LOG=me.log'
    ];
对此有什么一般性的建议吗? perl程序员通常如何处理输入到脚本中的复杂参数?

使用:

关于命令行args常见做法的两个注意事项:

  • 选项通常是小写的。因此,将
    CONFIG=set.CONFIG
    更改为
    CONFIG=set.CONFIG
  • 带有参数的选项以两个破折号作为前缀<代码>--log=me.log
  • 因此,以下措施将起作用:

    ./myscript.pl runabnormal --help /sbin/proc -f filename --config=set.config --log=me.log
    

    你说你的问题很特别,与其他问题不同,但在我看来,你所问的只是如何使用
    @ARGV
    ?使用
    Data::Dumper
    并不是一种“最佳”方法,因为它只打印参数的值。这实际上需要
    --config=set.config--log=me.log
    ,但这更为传统,当然更好,除非那些
    X=Y
    参数是任意的。//我的($state,$proc)=@ARGV?好眼力。错过了。在回答中更新。@ARGV用于示例中包含的两个非选项。我决定不再去理解他的意图,只是含糊其辞。我不知道如何处理
    -f filename
    。是
    文件=s
    处理
    -f
    ?如果我有
    -f1文件1-f2文件2
    -f1
    -f2
    在这种情况下是单独的选项,需要代码来定义它们。但是,可以将多个值传递给同一个选项:
    ./myscript.pl runabnormal --help /sbin/proc -f filename --config=set.config --log=me.log