Perl 命令行参数

2025年3月17日 | 阅读 3 分钟

命令行参数以与任何其他语言相同的方式发送到 Perl 程序。@ARGV 数组保存命令行参数。即使使用 "use strict",也无需使用变量。默认情况下,此变量始终存在,并且来自命令行的值会自动放置在此变量中。要访问脚本的命令行参数,您只需要从 @ARGV 数组中读取即可。

Perl 允许使用 @ARGV 数组作为文件名,使用 <>。当从 <> 读取时,$ARGV 包含当前文件的名称。

@ARGV 数组元素

@ARGV 数组与普通数组的工作方式相同。它的第一个参数将是 $ARGV[0],第二个参数是 $ARGV[1],依此类推。


Perl 命令行参数示例

让我们看一个简单的例子来打印命令行参数。在本例中,我们将使用用户的姓名作为命令行参数打印欢迎消息。我们需要两个命令行参数,即用户的名字和姓氏。

步骤1 在您的系统中创建脚本 welcome.pl

在上面的脚本中,首先它将检查是否提供了两个命令行参数。如果没有,它将给出错误的输入错误。如果是,它将分别处理这些参数作为 $ARGV[0] 和 $ARGV[1]。

步骤2 在您的控制台中运行脚本,命令为 perl welcome.pl Christian Grey

注意:在给出此命令之前,请确保您位于包含您的脚本 welcome.pl 的目录中

Perl Command line arguments 1

这是您将在控制台中获得的输出。

步骤2 在您的控制台中运行脚本,命令为 perl welcome.pl Christian

在这里,我们只从命令行传递一个参数。

Perl Command line arguments 2

在输出中,您可以看到传递一个参数的错误输入消息。


使用循环的 Perl 命令行参数示例

现在我们将运行一个循环来打印命令行参数。在此示例中,您可以输入任意数量的参数。

步骤1 在您的系统中创建脚本 loop.pl

步骤2 在您的控制台中运行脚本,命令为 perl loop.pl a b c d e f g h

Perl Command line arguments 3

查看上面的输出,它还显示了命令行上传递的总参数。在这里我们传递了 8 个参数。


Perl Getopt::Long

简单的命令行选项使用 ?s 选项完成。复杂的命令行选项使用 Getopt::Std 和 Getopt::Long 完成。

Getopt 代表 GetOptions。它根据我们给它的配置处理 @ARGV 的内容。它根据处理返回 true 或 false 值。

示例

在本例中,我们将从命令行获取用户的年龄。

我们声明了一个变量 $x,它将存储插入到标准控制台的 --from 中的值。from=s 声明一个名为 --from 的命令行参数,后面跟一个字符串。它进一步映射到变量 $x。反斜杠 (\) 意味着我们正在传递对变量的引用。

只有当我们通过传递看起来像参数名称并以 (-) 开头但未在此脚本中声明的内容来运行此脚本时,此脚本才会切换到 die 部分。

现在,我们将运行此程序。

输出

Perl Command line arguments 4

查看输出,在控制台中输入年龄后,我们得到了上面的输出。