计算机程序员是做什么的当使用Perl时,它在一个名为argv的特殊数组中,其中存储命令行参数。要访问脚本的命令行参数,只需要从argv读取。

当用Perl编写像programming.pl这样的脚本时,您的用户可以使用Perl programming.pl在命令行上运行脚本。

用户还可以使用Perl programming.pl-a-machine remote/etc来传递任何命令行参数以及中提到的其他字符串这篇文章关于Perl函数.这些值将由Perl自动忽略。您如何知道传递了哪些脚本值,哪些不是?这是argv进来的地方。

perl自动提供名为argv的数组,持有所有命令行值。使用Perl Argv时,您将不必声明变量。这是一个始终存在的变量,并且每次都可以在此变量中自动放置命令行值,如您所见这个Perl。

当没有参数时,数组将为空。如果有一个命令行参数,这个值将成为唯一的argv元素。在上面的例子中,argv中包含以下元素:/etc, remote, machine, -a。下面是它的实际操作:

argv1.

下面是运行perl程序时的输出:

argv2.

为了指出argv内容,我们使用了Data:: dump函数' Dumper '。’如果您正在使用另一种语言进行编程,您可能想知道Perl程序名在哪里。

提取argv命令行参数

Argv恰好是一个常规的Perl数组。当创建其他数组时,不同之处在于它是在启动脚本时由Perl填充的,您不需要声明它。你可以将argv作为一个常规数组来处理。你可以使用argv[0]索引来访问它。您还可以使用foreach元素获得访问权限。在argv上,你也可以使用push, pop, unshift或shift。

你甚至可以改变argv内容,也可以获取它。如果您希望在命令行中出现单个值,您可以通过查看$argv[0]来检查它是否提供。当你寻找一个以上的变量时,检查$argv[1]。

Perl Argv例子

假设您正在创建一个电话本。如果你只提供一个名字,相应的电话号码将被打印在应用程序中。如果您给出一个数字加上一个名称,程序将保存这个对。然后,你可以期望参数到达$argv[1]和$argv[0],但除了是你的数组元素,这些没有其他意义。因此,在您的代码中,您可能希望使用自己的变量名,而不是$argv[0]之类的。下面是一个将每个值复制到对应变量的例子,变量名表示为:

argv3.

你也可以这样做:

argv4.

在这里你可以看到完整的数组:

argv6.

检查在复制argv值之后是否提供了名称。否则,退出脚本。如果有名字,找出是否有相应的数字,如果有,保存到数据库并退出。另一方面,如果没有数字,试着从数据库中获取。下面是它的工作原理——注意,你并没有真正输入$符号,因为这只是一个提示标记:

argv6.

你可以在这里看到所有的调用看起来都很好,除了最后一个。最后一通电话把无名氏的电话号码保存成了无名氏,而不是789。无论你使用什么语言,这通常都是这样的情况,你很快就会看到这Linux课程也是。运行脚本的命令行或shell将划分线分开,将每个值传递给在argv中安排它们的perl。

每次检测到空格时,Windows命令行和Linux/Unix Shell都会分割值,如下所示Linux课程.当您在perl programming.pl中键入John Doe 789时,实际发生的是shell向脚本传递了三个值。为了使它正确工作,你需要在引号内使用空格排列每个值:

$0变量在Perl

在上面的例子中,执行的程序的名称总是在Perl的$0变量中。

熟悉Linux / Unix shell编程的人会立即知道脚本的名称将以0美元,与Linux / UNIX的方式。但是,命令参数的其余部分是N $ 1和2美元。常规Perl表达式使用这些变量。它在argv中,您可以找到命令行参数,就像Linux / Unix shell的$ *一样。

如果您碰巧熟悉C中的编程语言,则这与ARGV中使用的语言不同,只是Perl Argv不包含程序名称。相反,它是您发现它的0美元变量。由于您可以通过将数组放入标量内容或使用标量函数来轻松获取argv数组的元素数,因此不需要argc等变量,就像它向您展示您Perl初学者课程。

特色课程

命令行101.

最后更新于11月2020年11月

  • 1小时总
  • 19讲座
  • 初学者水平
5 (1)

即使您之前从未使用该命令行,则在同一时间学习MacOS和Linux的命令行。|由Kalob Taulien

探索课程

命令行学生也要学习

赋予你的团队。引领行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求演示