Perl中的命令行参数变量@ARGV

Rav*_*sar 3 perl command arguments line argv

我和perl一样空白.我有一个任务将脚本从Perl转换为PowerShell.所以请你善意回答你的问题.我读到了Perl @ARGV的命令行参数.据我所知,在perl脚本执行时,传递的任何参数都将由Perl中的这个特殊数组变量捕获.我们可以阅读@ARGV并使用下面的值为标量变量赋值

($var1,$var2) = @ARGV;
Run Code Online (Sandbox Code Playgroud)

我需要了解以下声明正在做什么

($var1,$var2,@ARGV) = @ARGV;
Run Code Online (Sandbox Code Playgroud)

在我的perl脚本中,我们对@ARGV中的值有条件并基于@ARGV值调用相应的子例程.

根据我的理解,如果我们在@ARGV中有两个以上的值,那么在括号语句的左侧是改变ARGV的值/用于用剩余的值重写@ARGV?

请通过一个简单的例子帮助我理解这一点.

谢谢拉维

Ole*_*nge 6

它从@ARGV中删除前两个参数,并将它们放在$ var1和$ var2中.

就个人而言,我会把它写成:

$var1 = shift @ARGV;
$var2 = shift @ARGV;
Run Code Online (Sandbox Code Playgroud)

但这是一个品味问题.

  • 我甚至可能不会这样做`我的($ first,$ second,@ everything_else)= @ ARGV;`更像是我的东西:) (7认同)
  • @Sobrique 脚本稍后可能会调用 [GetOptions](https://metacpan.org/pod/Getopt::Long),这需要修改 `@ARGV`。 (2认同)